Freigeben über


Verwenden von FetchXML zum Erstellen einerAbfrage

 

Veröffentlicht: Januar 2017

Gilt für: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Um eine FetchXML-Abfrage in Microsoft Dynamics 365 und Microsoft Dynamics 365 (online) auszuführen, müssen Sie zuerst die XML-Abfragezeichenfolge erstellen. Nachdem Sie die Abfragezeichenfolge erstellt haben, 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, wie veranschaulicht in Beispiel: Überprüfen und ausführen einer gespeicherten Abfrage. 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.

Erstellen der Abfragezeichenfolge

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 Abfrage

Der folgende Code zeigt, wie eine FetchXML-Abfrage 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"]);   }

Abfrageergebnisse

Wenn Sie eine FetchXML-Abfrage ausführen, indem Sie die RetrieveMultiple-Methode verwenden, ist der Rückgabewert ein EntityCollection, der 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.

Siehe auch

Abfragen erstellen mit FetchXML
FetchXML-Aggregation verwenden
FetchXML schema

Microsoft Dynamics 365

© 2017 Microsoft. Alle Rechte vorbehalten. Copyright