Compartir vía


elemento link-entity

Combina una tabla relacionada con la entidad o la entidad de vínculo para devolver columnas adicionales con el resultado. También se usa con elementos de filtro para aplicar condiciones en los valores de columna de las tablas relacionadas.

Obtenga información sobre cómo combinar tablas mediante FetchXml.

Examples

En los ejemplos siguientes se muestra el uso link-entity con diferentes tipos de relaciones.

Relación de varios a uno

Esta consulta devuelve datos de las tablas de cuenta y contacto en función de la columna de búsqueda PrimaryContactId del registro de cuenta:

<fetch>
  <entity name='account'>
    <attribute name='name' />
    <link-entity name='contact'
      from='contactid'
      to='primarycontactid'
      link-type='inner'
      alias='contact'>
      <attribute name='fullname' />
    </link-entity>
  </entity>
</fetch>

Relación uno a varios

Esta consulta devuelve datos de las tablas de contactos y cuentas en función de la relación de contacto account_primary_contact uno a varios.

<fetch>
  <entity name='contact'>
    <attribute name='fullname' />
    <link-entity name='account' 
     from='primarycontactid' 
     to='contactid' 
     alias='account'>
      <attribute name='name' />
    </link-entity>
  </entity>
</fetch>

Relación de varios a varios

Esta consulta devuelve datos de las tablas SystemUser y Team mediante la teammembership_association relación de varios a varios.

<fetch>
  <entity name='systemuser'>
    <attribute name='fullname' />
    <link-entity name='teammembership'
      from='systemuserid'
      to='systemuserid' >
      <link-entity name='team'
        from='teamid'
        to='teamid'
        link-type='inner'
        alias='team'>
        <attribute name='name' />
      </link-entity>
    </link-entity>
  </entity>
</fetch>

Attributes

Nombre ¿Obligatorio? Description
name El nombre lógico de la tabla relacionada.
to No Nombre lógico de la columna del elemento primario que debe coincidir con la columna de tabla relacionada especificada en el from atributo . Aunque no es técnicamente necesario, normalmente se usa este atributo.
from No Nombre lógico de la columna de la tabla relacionada que coincide con la columna especificada en el to atributo . Aunque no es técnicamente necesario, normalmente se usa este atributo.
alias No Representa el nombre de la tabla relacionada. Si no establece un alias, se generará uno para asegurarse de que todas las columnas tienen nombres únicos, pero no podrá usar ese alias para hacer referencia a la entidad de vínculo en otras partes del XML de captura. Los alias generados automáticamente usan el patrón {LogicalName}+{N}, donde N es el número secuencial de la entidad de vínculo en el XML de captura a partir de 1.
link-type No Tipo de uso de vínculo. El comportamiento predeterminado es interno. Más información sobre las opciones de tipo de vínculo
intersect No Indica que link-entity se usa para combinar tablas y no devolver ninguna columna, normalmente para una relación de varios a varios. La existencia de este atributo no cambia la ejecución de la consulta. Puede agregar este atributo a al unirse a link-entity una tabla, pero no incluir ningún elemento de atributo para mostrar que esto es intencional.

Uso from de atributos y to

Es mejor establecer valores para los from atributos y to . Normalmente, ambos atributos se usan para definir explícitamente las columnas que deben coincidir. Sin embargo, los from atributos y to no son técnicos necesarios.

Nota:

  • Es importante que las columnas especificadas en los from atributos y to sean del mismo tipo. No se admite el uso de tipos de columnas diferentes. Cuando las columnas no son del mismo tipo, la infraestructura de Dataverse puede forzar una conversión, pero esta práctica puede dar lugar a una penalización de rendimiento significativa.

  • El significado de los from atributos y to en FetchXml es el opuesto a las propiedades LinkEntity.LinkFromAttributeName y LinkEntity.LinkToAttributeName correspondientes que se usan al redactar consultas mediante QueryExpression.

Si no usa ninguno de estos atributos y existe una relación de varios a varios del sistema entre las dos tablas, Dataverse selecciona los valores de clave adecuados mediante esa relación.

Si especifica solo uno de los from atributos o to , Dataverse intenta averiguar la relación correcta mediante las definiciones de esquema de relación entre las dos tablas.

De lo contrario, obtendrá el siguiente error:

Código: 0x80041102
Mensaje: No system many-to-many relationship exists between <table A> and <table B>. If attempting to link through a custom many-to-many relationship ensure that you provide the from and to attributes.

Por ejemplo, ambas consultas usan la teammembership_association relación de varios a varios entre las tablas systemuser y team . En este caso, Dataverse puede trabajar con los from atributos y to y que link-entity especifica la tabla intersect no es necesaria.

Especificar todos los atributos

<fetch top="2">
<entity name="systemuser">
<attribute name="fullname" />
<link-entity
name="teammembership"
from="systemuserid"
to="systemuserid"
intersect="true"
>
<link-entity
name="team"
from="teamid"
to="teamid"
link-type="inner"
alias="team"
>
<attribute name="name" />
</link-entity>
</link-entity>
</entity>
</fetch>

Permitir que Dataverse elija

<fetch top="2">
<entity name="systemuser">
<attribute name="fullname" />
<link-entity name="team" alias="team">
<attribute name="name" />
</link-entity>
</entity>
</fetch>

Use link-type para aplicar filtros en los registros devueltos. En la tabla siguiente se describen los valores válidos link-type :

Nombre Description
inner Predeterminado. Restringe los resultados a las filas con valores coincidentes en ambas tablas.
outer Incluye los resultados del elemento primario que no tiene un valor coincidente.
any Úselo dentro de un elemento de filtro. Restringe los resultados a las filas primarias con las filas coincidentes de la entidad vinculada. Aprenda a usar any para filtrar valores en tablas relacionadas
not any Úselo dentro de un elemento de filtro. Restringe los resultados a las filas primarias sin filas coincidentes en la entidad vinculada. Aprenda a usar not any para filtrar valores en tablas relacionadas
all Úselo dentro de un elemento de filtro. Restringe los resultados a las filas primarias en las que existen filas con el valor de columna coincidente from en la entidad de vínculo, pero ninguna de esas filas coincidentes satisface los filtros adicionales definidos para esta entidad de vínculo. Debe invertir los filtros adicionales para buscar filas primarias en las que cada fila de entidad de vínculo coincidente satisface algunos criterios adicionales. Aprenda a usar all para filtrar valores en tablas relacionadas
not all Úselo dentro de un elemento de filtro. Restringe los resultados a las filas primarias con las filas coincidentes de la entidad vinculada. Este tipo de vínculo es equivalente a any a pesar del nombre. Aprenda a usar not all para filtrar valores en tablas relacionadas
exists Una variante de inner que puede proporcionar ventajas de rendimiento. Usa una condición EXISTS en la where cláusula . Úselo cuando no sean necesarias varias copias de la fila primaria en los resultados. Más información sobre "exists" y "in"
in Una variante de inner que puede proporcionar ventajas de rendimiento. Usa una condición IN en la where cláusula . Úselo cuando no sean necesarias varias copias de la fila primaria en los resultados. Más información sobre "exists" y "in"
matchfirstrowusingcrossapply Una variante de inner que puede proporcionar ventajas de rendimiento. Use este tipo cuando solo sea necesario un ejemplo único de una fila coincidente de la entidad vinculada y no sean necesarias varias copias de la fila primaria en los resultados. Más información sobre matchfirstrowusingcrossapply

Elementos primarios

Nombre Description
entidad Especifica el elemento secundario de un elemento fetch, la "entidad primaria" de la consulta. Solo se permite una entidad.
link-entity Combina una tabla relacionada con la entidad o la entidad de vínculo para devolver más columnas con el resultado.

Elementos secundarios

Nombre Repeticiones Description
todos los atributos 0 o 1 Indica que se devuelven todos los valores de columna que no son NULL para cada fila. Es lo mismo que no agregar ningún elemento de atributo. No se recomienda usar este elemento para la mayoría de los casos.
atributo 0 o varios Especifica una columna de una entidad o entidad de vínculo que se va a devolver con una consulta.
orden 0 o varios Especifica un criterio de ordenación para las filas de los resultados.
link-entity 0 o varios Combina una tabla relacionada con la entidad o la entidad de vínculo para devolver más columnas con el resultado.
filtro 0 o 1 Especifique condiciones complejas para que una entidad o una entidad de vínculo se apliquen a una consulta.