Compartir a través de


elemento link-entity

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

Aprenda a unir tablas mediante FetchXml.

Ejemplos

Los siguientes ejemplos muestran el uso de link-entity con diferentes tipos de relaciones.

Relación de varios a uno

Esta consulta devuelve datos de las tablas cuenta y contacto basadas en la Columna de búsqueda PrimaryContactId en el 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 de uno a varios

Esta consulta devuelve datos de las tablas contacto y cuenta basándose en la relación de cuenta account_primary_contact one-to-many.

<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 relación teammembership_association many-to-many.

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

Atributos

Name ¿Obligatorio? Descripción
name El nombre lógico de la tabla relacionada.
to No El nombre lógico de la columna del elemento primario para concuerda con la tabla relacionada que coincide con la columna especificada en el atributo from. Aunque técnicamente no es necesario, este atributo suele utilizarse.
from No El nombre lógico de la columna de la tabla relacionada que coincide con la columna especificada en el atributo to. Aunque técnicamente no es necesario, este atributo suele utilizarse.
alias No Representa el nombre de la tabla relacionada. Si no establece un alias, se generará uno por usted para garantizar que todas las columnas tengan nombres únicos, pero no podrá utilizar ese alias para hacer referencia a la entidad de enlace en otras partes del XML de obtención. Los alias generados automáticamente utilizan el patrón {LogicalName}+{N}, donde N es el número secuencial de la entidad de enlace en el XML de recuperación a partir de 1.
link-type No El 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 utiliza para unir tablas y no devolver ninguna columna, normalmente para una relación de muchos a muchos. La existencia de este atributo no cambia la ejecución de la consulta. Puede agregar este atributo a link-entity cuando se une a una tabla pero no incluye ningún elemento de atributo para demostrar que esto es intencional.

Uso de los atributos from y to

Lo mejor es establecer valores para los atributos from y to. Ambos atributos se suelen utilizar para definir explícitamente las columnas que deben coincidir. Sin embargo, los atributos from y to no son técnicamente necesarios.

Nota

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

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

Si no utiliza ninguno de estos atributos y existe una relación de sistema de muchos a muchos entre las dos tablas, Dataverse selecciona los valores clave apropiados utilizando esa relación.

Si especifica solo uno de los atributos from o to, Dataverse intenta descubrir la relación correcta utilizando las definiciones del 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 utilizan la relación de mucho a muchos teammembership_association entre las tablas systemuser y team. En este caso, Dataverse puede calcular los atributos from y to y link-entity que especifica la tabla de intersección no es necesario.

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>

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

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

Name Description
inner Predeterminado. Restringe los resultados a filas con valores coincidentes en ambas tablas.
outer Incluye resultados del elemento principal que no tienen un valor coincidente.
any Úselo dentro de un elemento de filtro. Restringe los resultados a las filas principales con filas coincidentes en la entidad vinculada. Aprenda a utilizar any para filtrar valores en tablas relacionadas
not any Úselo dentro de un elemento de filtro. Restringe los resultados a las filas principales sin filas coincidentes en la entidad vinculada. Aprenda a utilizar not any para filtrar valores en tablas relacionadas
all Úselo dentro de un elemento de filtro. Restringe los resultados a las filas principales donde existen filas con un valor de columna from coincidente en la entidad de enlace, pero ninguna de esas filas coincidentes satisface los filtros adicionales definidos para esta entidad de vínculo. Necesita invertir los filtros adicionales para encontrar filas principales donde cada fila de entidad de enlace coincidente satisfaga algunos criterios adicionales. Aprenda a utilizar all para filtrar valores en tablas relacionadas
not all Úselo dentro de un elemento de filtro. Restringe los resultados a las filas principales con filas coincidentes en la entidad vinculada. Este tipo de vínculo es equivalente a any a pesar del nombre. Aprenda a utilizar not all para filtrar valores en tablas relacionadas
exists Una variante de inner que pueden proporcionar beneficios de rendimiento. Utiliza una condición EXISTS en la cláusula where . Utilícelo cuando no sean necesarias varias copias de la fila principal en los resultados. Obtenga más información sobre exists e in
in Una variante de inner que pueden proporcionar beneficios de rendimiento. Utiliza una condición IN en la cláusula where . Utilícelo cuando no sean necesarias varias copias de la fila principal en los resultados. Obtenga más información sobre exists e in
matchfirstrowusingcrossapply Una variante de inner que pueden proporcionar beneficios de rendimiento. Utilice este tipo cuando solo sea suficiente un único ejemplo de una fila coincidente de la entidad vinculada y no sean necesarias varias copias de la fila principal en los resultados. Obtenga más información sobre matchfirstrowusingcrossapply

Elementos primarios

Name Descripción
entidad Especifica el elemento secundario de un elemento de fetch, el 'elemento principal' de la consulta. Solo se permite una entidad.
link-entity Une una tabla relacionada con la entidad o vínculo-entidad para más columnas adicionales con el resultado.

Elementos secundarios

Name Repeticiones Description
all-attributes 0 o 1 Indica que se devuelven todos los valores de columna no nulos para cada fila. Es lo mismo que no agregar ningún elemento de atributo. No recomendamos utilizar este elemento en la mayoría de los casos.
atributo 0 o muchos Especifica una columna de una entidad o entidad de vínculo para regresar con una consulta.
order 0 o muchos Especifica un orden de clasificación para las filas de los resultados.
link-entity 0 o muchos Une una tabla relacionada con la entidad o vínculo-entidad para más columnas adicionales con el resultado.
filter 0 o 1 Especificar condiciones complejas para que una entidad o vínculo-entidad se apliquen a una consulta.

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