Verwenden von FetchXML zum Erstellen einerAbfrage
FetchXML ist eine proprietäre XML-basierte Abfragesprache von Microsoft Dataverse, die zum Abfragen von Daten entweder über die Web-API oder das SDK für .NET verwendet wird. Sie basiert auf einem Schema, das die Funktionalität der Sprache beschreibt. Die FetchXML-Sprache unterstützt ähnliche Funktionalitäten wie Abfrageausdrücke. Darüber hinaus wird sie als serialisierte Form der Abfrage verwendet, um eine Abfrage als benutzereigene gespeicherte Ansicht in der UserQuery-Tabelle und als organisationseigene gespeicherte Ansicht in der SavedQuery-Tabelle zu speichern.
Erstellen der FetchXML-Abfragezeichenfolge
Um eine FetchXML-Abfrage auszuführen, müssen Sie zuerst die XML-Abfragezeichenfolge erstellen. Nach dem Erstellen der Abfragezeichenfolge verwenden Sie die IOrganizationService.RetrieveMultiple Methode, um die Abfragezeichenfolge auszuführen. Die Rechte des angemleldeten Benutzers haben Auswirkungen auf den zurückgegebenen Satz von Datensätzen. Nur Datensätze, für die der angemeldete Benutzer über Leseberechtigung verfügt, werden zurückgegeben.
Die FetchXML-Abfragezeichenfolge muss der Schemadefinition für die FetchXML-Sprache entsprechen. Weitere Informationen finden Sie unter FetchXML-Schema.
Sie können auch eine Abfrage speichern, indem Sie einen SavedQuery
-Datensatz erstellen. Legen Sie visible
auf dem Knoten link-entity
auf false
fest, um die verknüpfte Tabelle in der Benutzeroberfläche Erweiterte Suche auszublenden. Sie wird weiterhin an der Ausführung der Abfrage teilnhmn und die entsprechenden Ergebnisse zurückgeben.
Warnung
Rufen Sie nicht alle Spalten in einer Abfrage ab, da dies die Leistung beeinträchtigt. Das trifft insbesondere zu, wenn die Abfrage als Parameter in einer Updateanforderung verwendet wird. Wenn bei einer Aktualisierung alle Spalten einbezogen werden, legt dies alle Feldwerte fest, auch wenn sie unverändert sind, und löst oft kaskadierte Aktualisierungen in untergeordneten Datensätzen aus.
Beispiel-FetchXML-Abfragezeichenfolgen
Im folgenden Beispiel ruft die Anweisung FetchXML alle Konten ab:
<fetch mapping='logical'>
<entity name='account'>
<attribute name='accountid'/>
<attribute name='name'/>
</entity>
</fetch>
Im folgenden Beispiel ruft die Anweisung FetchXML alle Konten ab, bei denen der Nachname des besitzenden Benutzers nicht gleich Cannon ist:
<fetch mapping='logical'>
<entity name='account'>
<attribute name='accountid'/>
<attribute name='name'/>
<link-entity name='systemuser' to='owninguser'>
<filter type='and'>
<condition attribute='lastname' operator='ne' value='Cannon' />
</filter>
</link-entity>
</entity>
</fetch>
Im folgenden Beispiel verwendent die FetchXML-Anweisung Zählung, um die maximalen Anzahl der Datensätze festzulegen, die von der Abfrage zurückgegeben werden. In diesem Fall werden die ersten 3 Konten von der Abfrage zurückgegeben.
<fetch mapping='logical' count='3'>
<entity name='account'>
<attribute name='name' alias='name'/>
</entity>
</fetch>
Dieses Beispiel zeigt eine innere Verbindung zwischen EntityMap und AttributeMap, wo die EntityMapID übereinstimmt.
<fetch version='1.0' mapping='logical' distinct='false'>
<entity name='entitymap'>
<attribute name='sourceentityname'/>
<attribute name='targetentityname'/>
<link-entity name='attributemap' alias='attributemap' to='entitymapid' from='entitymapid' link-type='inner'>
<attribute name='sourceattributename'/>
<attribute name='targetattributename'/>
</link-entity>
</entity>
</fetch>
Wichtig
Eine FetchXML-Abfrage hat ein Limit von maximal 15 zugelassenen Verknüpfungstabellen.
Ausführen der FetchXML-Abfrage
Sie können eine FetchXML-Abfrage ausführen, indem Sie entweder die Web-API oder das SDK für .NET verwenden.
Verwenden von Web-API
Sie können eine URL codierte FetchXml-Zeichenfolge zum entsprechenden entityset mithilfe des Abfragezeichenfolgenparameters fetchXml
ausführen. Weitere Informationen: FetchXml mit Web-API verwenden.
Verwenden des SDK für .NET
Verwenden Sie die IOrganizationService.RetrieveMultiple Methode, um einen FetchExpression zu übergeben, bei der die Query-Eigenschaft die FetchXml-Abfrage enthält.
Der folgende Code zeigt, wie Sie eine FetchXML-Abfrage mit dem Dienst „Organisationen“ ausführen:
// Retrieve all accounts owned by the user with read access rights to the accounts and
// where the last name of the user is not Cannon.
string fetch2 = @"
<fetch mapping='logical'>
<entity name='account'>
<attribute name='accountid'/>
<attribute name='name'/>
<link-entity name='systemuser' to='owninguser'>
<filter type='and'>
<condition attribute='lastname' operator='ne' value='Cannon' />
</filter>
</link-entity>
</entity>
</fetch> ";
EntityCollection result = _serviceProxy.RetrieveMultiple(new FetchExpression(fetch2));
foreach (var c in result.Entities)
{
System.Console.WriteLine(c.Attributes["name"]);
}
Wichtig
Wenn Sie mit Code wie dem obigen Beispiel arbeiten, stellen Sie immer sicher, dass es sich bei Ihrer Zeichenfolge um eine gültige codierte XML-Zeichenfolge handelt. Dies gilt insbesondere für die Möglichkeit, Sonderzeichen in Bedingungswerten wie z. B. „&<> einzubinden, die als &<&;gt; kodiert werden.
Sie können eine FetchXML-Abfrage in einen Abfrageausdruck mit der FetchXmlToQueryExpressionRequest-Nachricht konvertieren.
FetchXML-Abfrageergebnisse
Wenn Sie einer FetchXML-Abfrage ausführen, indem Sie die OrganizationServiceProxy.RetrieveMultiple(QueryBase) Methode, ist der Rückgabewert eine EntityCollection, die die Ergebnisse der Abfrage enthält. Sie können dann durch die Tabellensammlung iterieren. Der vorherige Beispiel verwendet die foreach
-Schleife, um die Ergebnissammlung der FetchXML-Abfrage zu durchlaufen.
Verwenden Sie Platzhalterzeichen in Bedingungen mit Zeichenfolgenwerte
Sie können Platzhalterzeichen verwenden, wenn Sie Abfragen mit Bedingungen auf Zeichenfolgenwerten erstellen. Weitere Informationen: Verwenden Sie Platzhalterzeichen in Bedingungen für Zeichenfolgenwerte
Hinweis
Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)
Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für