Delen via


FetchXML gebruiken om een query te construeren

 

Gepubliceerd: november 2016

Is van toepassing op: Dynamics CRM 2015

Om een FetchXML-query in Microsoft Dynamics CRM 2015 en Microsoft Dynamics CRM 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.

Waarschuwing

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>

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

© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht