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 &amp;&lt&;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).