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