Usar FetchXML para crear una consulta

 

Publicado: enero de 2017

Se aplica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Para ejecutar una consulta de FetchXML en Microsoft Dynamics 365 y Microsoft Dynamics 365 (online), primero debe crear la cadena de consulta de XML. Después de crear la cadena de consulta, use el método de IOrganizationService.RetrieveMultiple para ejecutar la cadena de consulta. Los privilegios del usuario que inició la sesión afectan el conjunto de registros devueltos. Solo se devolverán los registros a los que tiene acceso de lectura el usuario que inició sesión

La cadena de consulta de FetchXML debe adaptarlas a la definición del esquema para el lenguaje FetchXML. Para obtener más información, vea FetchXML schema.

Puede guardar una consulta al crear un registro de SavedQuery, según se demuestra en Ejemplo: validar y ejecute una consulta guardada. Defina visible en el nodo de link-entity en false para ocultar la entidad vinculada en la interfaz de usuario Búsqueda avanzada. Aún así participará en la ejecución de la consulta y devolverá los resultados apropiados.

Advertencia

No se recuperan todos los atributos en una consulta debido al efecto negativo en el rendimiento. Este valor es "true" si la consulta se usa como parámetro de una solicitud de actualización. En una actualización, si están incluidos todos los atributos, se definen todos los valores de campo, incluso si no se cambian. Con frecuencia, esto activa las actualizaciones en cascada para los registros secundarios.

Crear la cadena de consulta

En el siguiente ejemplo, la instrucción FetchXML recupera todas las cuentas:

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

En el siguiente ejemplo, la instrucción FetchXML recupera todas las cuentas donde el apellido del usuario que es propietario no es 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>  

En el siguiente ejemplo, la instrucción FetchXML utiliza Count para definir el número máximo de registros de devolución de la consulta. En este caso las primeras 3 cuentas se devuelven desde la consulta,

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

Este ejemplo muestra una combinación interna entre EntityMap y AttributeMap donde EntityMapID coincide.

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

Ejecutar la consulta

El siguiente código muestra cómo ejecutar una 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 de la consulta

Cuando ejecuta una consulta de FetchXML mediante el método de RetrieveMultiple, el valor de retorno predeterminado es EntityCollection que contiene los resultados de la consulta. A continuación puede iterar a través de la colección de entidades. El ejemplo anterior usa el bucle de foreach para iterar a través de la recopilación de resultados de la consulta de FetchXML.

Ver también

Crear consultas con FetchXML
Usar el agregado FetchXML
FetchXML schema

Microsoft Dynamics 365

© 2017 Microsoft. Todos los derechos reservados. Copyright