Delen via


FetchXML gebruiken om een query te construeren

 

Gepubliceerd: januari 2017

Is van toepassing op: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Om een FetchXML-query in Microsoft Dynamics 365 en Microsoft Dynamics 365 (online) uit te voeren, moet u eerst de XML-querytekenreeks maken. Wanneer u de querytekenreeksparameter hebt gemaakt, gebruikt u de methode IOrganizationService.RetrieveMultiple om de een querytekenreeks uit te voeren. De bevoegdheden van de aangemelde gebruiker zijn van invloed op welke records als resultaat worden gegeven. Alleen records waarvoor de aangemelde gebruiker leestoegang heeft, worden geretourneerd.

De FetchXML-querytekenreeks moet aan de schemadefinitie van de FetchXML-taal voldoen. Zie FetchXML schema voor meer informatie.

U kunt een query opslaan door een SavedQuery-record te maken, zoals aangegeven in Voorbeeld: Een opgeslagen query valideren en uitvoeren. Stel visible op het link-entity-knooppunt in op false om de gekoppelde entiteit in de gebruikersinterface Geavanceerd zoeken te verbergen. De entiteit neemt nog steeds deel aan de uitvoering van de query en retourneert de juiste resultaten.

System_CAPS_warningWaarschuwing

Haal niet alle kenmerken in a query op vanwege de negatieve gevolgen op prestaties. Dit is vooral waar als de query wordt gebruikt als een parameter voor een updateaanvraag. Dit stelt alle veldwaarden in in een update als alle kenmerken zijn opgenomen, ook als ze niet zijn gewijzigd, en activeert vaak trapsgewijze updates op onderliggende records.

Maak de querytekenreeks.

In het volgende voorbeeld haalt de FetchXML-instructie alle accounts op:

<fetch mapping='logical'> 
   <entity name='account'>
      <attribute name='accountid'/> 
      <attribute name='name'/> 
</entity>
</fetch>

In het volgende voorbeeld haalt de FetchXML-instructie alle accounts op waarbij de achternaam van de gebruiker die eigenaar is, niet gelijk is aan Cannon:

<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>  

In het volgende voorbeeld gebruikt de FetchXML-instructie een telling om het maximumaantal records in te stellen dat de query retourneert. In dit geval worden de eerste 3 accounts geretourneerd door de query.

<fetch mapping='logical' count='3'>
  <entity name='account'>
   <attribute name='name' alias='name'/>
  </entity></fetch>

Dit voorbeeld geeft een inner join weer tussen EntityMap en AttributeMap, waarbij de EntityMapID overeenkomt.

<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>

Voer de query uit.

De volgende code toont hoe u een FetchXML-query uitvoert:

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

Queryresultaat

Als u een FetchXML-query uitvoert met de methode RetrieveMultiple, is de retourwaarde een EntityCollection die de resultaten van de query bevat. U kunt vervolgens de entiteitsverzameling doorlopen. Het vorige voorbeeld gebruikt de foreach-lus om de volgende resultatenverzameling van de FetchXML-query te doorlopen.

Zie ook

Bouw query's met FetchXML
FetchXML-samenvoeging gebruiken
FetchXML schema

Microsoft Dynamics 365

© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht