Verwenden von FetchXML zum Erstellen einerAbfrage

FetchXML ist eine herstellereigene Abfragesprache, die in Common Data Service verwendet wird. Sie basiert auf einem Schema, das die Funktionalität der Sprache beschreibt. Die FetchXML-Sprache unterstützt ähnliche Abfragefunktionen als Abfrageausdrücke. Zusätzlich wird sie als serialisiertes Abfrageformular verwendet, das verwendet wird, um eine Abfrage als gespeicherte benutzereigene Ansicht in der UserQuery Entität und als gespeicherte organisationseigene Ansicht in der SavedQuery-Entität zu speichern.

Eine FetchXML-Abfrage kann mithilfe von Web API oder Organization Service ausgeführt werden.

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 im link-entity-Knoten auf false fest, um die verknüpfte Entität in der Benutzeroberfläche der Erweiterten Suche auszublenden. Sie wird weiterhin an der Ausführung der Abfrage teilnhmn und die entsprechenden Ergebnisse zurückgeben.

Warnung

Rufen Sie nicht alle Attribute in einer Abfrage ab, da dadurch die Leistung beeinträchtigt wird. Das trifft insbesondere zu, wenn die Abfrage als Parameter in einer Updateanforderung verwendet wird. Wenn in einem Update alle Attribute enthalten sind, werden dadurch alle Feldwerte festgelegt, selbst wenn sie unverändert sind, und häufig werden kaskadierende Updates zu untergeordneten Datensätzen ausgelöst.

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>  

Ausführen der FetchXML-Abfrage

Sie können eine FetchXML-Abfrage ausführen, indem Sie entweder die Web API oder den Organization Service verwenden.

Verwenden von Web-API

Sie können eine URL codierte FetchXml-Zeichenfolge zum entsprechenden entityset mithilfe des Abfragezeichenfolgenparameters fetchXml ausführen. Weitere Informationen: Benutzerdefiniertes FetchXML verwenden.

Verwenden des Organisationsservice

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 eine FetchXML-Abfrage mithilfe des Organisationservice ausgeführt wird:

  
// 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"]);
}  

Hinweis

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 authentifiziert den Benutzer. Methode, ist der Rückgabewert eine EntityCollection, die die Ergebnisse der Abfrage enthält. Sie können dann die Entitätssammlung durchlaufen. Der vorherige Beispiel verwendet die foreach-Schleife, um die Ergebnissammlung der FetchXML-Abfrage zu durchlaufen.