Use FetchXML para criar uma consulta
Publicado: janeiro de 2017
Aplicável a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Para executar uma consulta FetchXML no Microsoft Dynamics 365 e Microsoft Dynamics 365 (online), primeiro é necessário criar a cadeia de consulta XML. Depois de criar a cadeia de consulta, use o método IOrganizationService.RetrieveMultiple para executar a cadeia de consulta. Os privilégios do usuário conectado afetam o conjunto de registros retornados. Apenas os registros para os quais o usuário conectado tem acesso de leitura são retornados.
A cadeia de consulta FetchXML deve estar em conformidade com a definição de esquema para a linguagem FetchXML. Para obter mais informações, consulte FetchXML schema.
Para salvar uma consulta criando um registro SavedQuery, como demonstrado no Exemplo: Validar e executar uma consulta salva. Defina visible no nó link-entity para false para ocultar a entidade vinculada na interface do usuário Localização Avançada. Ainda participará da execução da consulta e retornará os resultados apropriados.
Aviso
Não recupera todos os atributos em uma consulta do efeito negativo no desempenho. Isso é especialmente verdadeiro se a consulta é usada como um parâmetro para uma solicitação de atualização. Em uma atualização, se todos os atributos estão incluídos, isso definirá todos os valores de campo, mesmo se não forem alterados, e dispara frequentemente atualizações em cascata para registros secundários.
Crie a Cadeia de Consulta
No exemplo a seguir, a declaração FetchXML recupera todas as contas:
<fetch mapping='logical'>
<entity name='account'>
<attribute name='accountid'/>
<attribute name='name'/>
</entity>
</fetch>
No exemplo a seguir, a declaração FetchXML recupera todas as contas onde o sobrenome do usuário proprietário não é igual a 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>
No exemplo a seguir, a declaração FetchXML usa a contagem para definir o número máximo de registros retornados na consulta. Neste caso, as 3 primeiras contas são retornadas da consulta
<fetch mapping='logical' count='3'>
<entity name='account'>
<attribute name='name' alias='name'/>
</entity></fetch>
Este exemplo exibe um trabalho interno entre EntityMap e AttributeMap onde a EntityMapID combina.
<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>
Execute a Consulta
O código a seguir mostra como executar uma consulta 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"]); }
Resultados da Consulta
Quando você executa uma consulta FetchXML usando o método RetrieveMultiple, o valor de retorno é um EntityCollection que contém os resultados da consulta. É possível iterar por meio do conjunto de entidades. O exemplo anterior usa o loop foreach para iterar por meio do conjunto de resultados de consultas FetchXML.
Confira Também
Criar consultas com FetchXML
Use a agregação FetchXML
FetchXML schema
Microsoft Dynamics 365
© 2017 Microsoft. Todos os direitos reservados. Direitos autorais