Utilizzare FetchXML per costruire una query

 

Data di pubblicazione: gennaio 2017

Si applica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Per eseguire una query FetchXML in Microsoft Dynamics 365 e Microsoft Dynamics 365 (online), è necessario creare la stringa di query XML. Dopo aver creato la stringa di query, utilizzare il metodo IOrganizationService.RetrieveMultiple per eseguirla. I privilegi dell'utente connesso influiscono sul set di record che vengono restituiti. Verranno restituiti solo i record per i quali l'utente connesso ha accesso in lettura.

La stringa di query FetchXML deve rispettare la definizione dello schema del linguaggio FetchXML. Per ulteriori informazioni, vedere FetchXML schema.

È possibile salvare una query creando un record SavedQuery, come illustrato in Esempio: convalidare ed eseguire una query salvata. Impostare visible del nodo link-entity su false per nascondere l'entità collegata nell'interfaccia utente Ricerca avanzata. Parteciperà comunque all'esecuzione della query e restituirà i risultati pertinenti.

Avviso

Non recuperare tutti gli attributi in una query altrimenti le prestazioni potrebbero risentirne. Ciò vale soprattutto se la query viene utilizzata come parametro di una richiesta di aggiornamento. In un aggiornamento, se tutti gli attributi vengono inclusi, vengono impostati i valori di tutti i campi, anche se sono invariati, e si generano spesso degli aggiornamenti a cascata nei record figlio.

Creare la stringa di query

Nell'esempio seguente l'istruzione FetchXML recupera tutti gli account:

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

Nell'esempio seguente l'istruzione FetchXML recupera tutti gli account in cui il cognome dell'utente proprietario è diverso da 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>  

Nell'esempio seguente l'istruzione FetchXML utilizza il conteggio per impostare il numero massimo di record restituiti dalla query. In questo caso la query restituisce i primi tre account.

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

In questo esempio viene illustrato un join interno tra EntityMap e AttributeMap dove trova corrispondenza EntityMapID.

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

Eseguire la query

Nel seguente codice viene illustrato come eseguire una query FetchXML:

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

Risultati della query

Quando si esegue una query FetchXML utilizzando il metodo RetrieveMultiple, il valore restituito è un oggetto EntityCollection che contiene i risultati della query. È possibile quindi scorrere la raccolta delle entità. Nell'esempio precedente viene utilizzato il loop foreach per scorrere la raccolta dei risultati della query FetchXML.

Vedere anche

Creare query con FetchXML
Utilizzare l'aggregazione FetchXML
FetchXML schema

Microsoft Dynamics 365

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright