Utilizzare FetchXML per costruire una query
Data di pubblicazione: novembre 2016
Si applica a: Dynamics CRM 2015
Per eseguire una query FetchXML in Microsoft Dynamics CRM 2015 e Microsoft Dynamics CRM 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>
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
© 2017 Microsoft. Tutti i diritti sono riservati. Copyright