Compartir por


Utilice FetchXML para construir una consulta

FetchXML es un lenguaje de consulta propietario basado en XML de Microsoft Dataverse que se utiliza para consultar datos mediante la API web o el SDK para . NETO. Se basa en un esquema que describe las funciones del idioma. El lenguaje FetchXML admite capacidades de consulta similares a las expresiones de consulta. Además, se usa como formulario serializado de consulta, usado para guardar una consulta como una vista guardada propiedad del usuario en la Tabla UserQuery y como una vista guardada propiedad de la organización en la Tabla SavedQuery.

Cree la cadena de consulta FetchXML

Para ejecutar una consulta FetchXML , primero debe crear la cadena de consulta XML. Después de crear la cadena de consulta, useIOrganizationService RetrieveMultiple método 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 FetchXML debe ajustarse a la definición de esquema para el idioma FetchXML . Para obtener más información, consulte Esquema Fetch XML.

Puede guardar una consulta al crear un registro de SavedQuery. Defina visible en el nodo de link-entity en false para ocultar la tabla 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 todas las columnas 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 incluidas todas las columnas, se definen todos los valores de campo, incluso si no se cambian. Con frecuencia, esto activa las actualizaciones en cascada para los registros secundarios.

Ejemplo FetchXML cadenas 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 apellido de usuario 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 usa el recuento para establecer el número máximo de registros devueltos por 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>  

Importante

Una consulta FetchXML tiene un límite de un máximo de 15 tablas de enlaces permitidas.

Ejecutar la consulta FetchXML

Puede ejecutar una consulta FetchXML utilizando la API web o el SDK para .NET.

Uso de la API web

Puede pasar una cadena FetchXml con código URL al entityset correspondiente mediante el parámetro de cadena de la consulta fetchXml. Más información: Usar FetchXml con API web.

Usar SDK para .NET

Use el IOrganizationService.RetrieveMultiple método pasando un FetchExpression donde la Query propiedad contiene la consulta FetchXml.

El siguiente código muestra cómo ejecutar una consulta FetchXML usando el servicio Organizaciones:

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

Importante

Cuando trabaje con código como el ejemplo anterior, siempre asegúrese de que su cadena sea una cadena XML codificada válida. Esto es especialmente cierto con respecto a la posibilidad de contener caracteres especiales en valores de condición como &<> codificados como &amp;&lt;&gt;.

Puede convertir una consulta FetchXML en una expresión de consulta con el mensaje FetchXmlToQueryExpressionRequest .

FetchXML resultados de la consulta

Cuando ejecuta una consulta FetchXML utilizando el OrganizationServiceProxy.RetrieveMultiple(QueryBase) Método, el valor devuelto es un EntityCollection que contiene los resultados de la consulta. A continuación puede iterar a través de la colección de tablas. El ejemplo anterior utiliza el bucle foreach para iterar a través de la colección de resultados de la consulta FetchXML .

Usar caracteres comodín en condiciones que utilizan valores de cadena

Puede usar caracteres comodín cuando construye consultas usando condiciones en valores de cadena. Más información: Usar caracteres comodín en condiciones para valores de cadena

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).