Partilhar via


elemento link-entity

Junta-se a uma tabela relacionada à entidade ou entidade-link para retornar colunas adicionais com o resultado. Também usado com elementos de filtro para aplicar condições em valores de coluna em tabelas relacionadas.

Saiba como unir tabelas usando FetchXml.

Examples

Os exemplos a seguir mostram o uso link-entity com diferentes tipos de relacionamentos.

Relação muitos-para-um

Esta consulta retorna dados das tabelas de conta e contato com base na coluna de pesquisa PrimaryContactId no registro de conta:

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

Relação um-para-muitos

Essa consulta retorna dados das tabelas de contato e conta com base na relação Contato account_primary_contact um-para-muitos.

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

Relacionamento muitos-para-muitos

Essa consulta retorna dados das tabelas SystemUser e Team usando a relação teammembership_association muitos-para-muitos.

<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

Nome Necessário? Description
name Yes O nome lógico da tabela relacionada.
to Não O nome lógico da coluna no elemento pai para corresponder à coluna da tabela relacionada especificada no from atributo. Embora não seja tecnicamente necessário, este atributo é geralmente usado.
from Não O nome lógico da coluna da tabela relacionada que corresponde à coluna especificada no to atributo. Embora não seja tecnicamente necessário, este atributo é geralmente usado.
alias Não Representa o nome da tabela relacionada. Se você não definir um alias, um será gerado para garantir que todas as colunas tenham nomes exclusivos, mas você não poderá usar esse alias para fazer referência à entidade do link em outras partes do XML de busca. Os aliases gerados automaticamente usam o padrão {LogicalName}+{N}, onde N é o número sequencial da entidade de link no XML de busca a partir de 1.
link-type Não O tipo de uso do link. O comportamento padrão é interno. Saiba mais sobre as opções de tipo de link
intersect Não Indica que o link-entity é usado para unir tabelas e não retornar colunas, normalmente para uma relação muitos-para-muitos. A existência desse atributo não altera a execução da consulta. Você pode adicionar esse atributo ao seu link-entity quando ingressar em uma tabela, mas não inclua nenhum elemento de atributo para mostrar que isso é intencional.

Uso from e to atributos

É melhor definir valores para os from e to atributos. Ambos os atributos geralmente são usados para definir explicitamente as colunas a serem correspondentes. No entanto, os from atributos e to não são tecnicamente necessários.

Observação

Se você não usar nenhum desses atributos e existir uma relação de muitos para muitos entre as duas tabelas, o Dataverse selecionará os valores de chave apropriados usando essa relação.

Se você especificar apenas um dos atributos orto, o from Dataverse tentará descobrir a relação correta usando as definições de esquema de relacionamento entre as duas tabelas.

Caso contrário, você receberá o seguinte erro:

Código: 0x80041102
Mensagem: 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 exemplo, ambas as consultas usam a relação teammembership_association muitos-para-muitos entre systemuser e tabelas de equipe . Nesse caso, o Dataverse pode trabalhar os from atributos e to e o link-entity que especifica a tabela de interseção não é necessário.

Especificar todos os 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>

Deixe o Dataverse escolher

<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 nos registros retornados. A tabela a seguir descreve os valores válidos link-type :

Nome Description
inner Predefinição. Restringe os resultados a linhas com valores correspondentes em ambas as tabelas.
outer Inclui resultados do elemento pai que não têm um valor correspondente.
any Use isso em um elemento de filtro. Restringe os resultados às linhas pai com quaisquer linhas correspondentes na entidade vinculada. Aprenda a usar any para filtrar valores em tabelas relacionadas
not any Use isso em um elemento de filtro. Restringe os resultados a linhas pai sem linhas correspondentes na entidade vinculada. Aprenda a usar not any para filtrar valores em tabelas relacionadas
all Use isso em um elemento de filtro. Restringe os resultados às linhas pai onde existem linhas com valor de coluna correspondente from na entidade de link, mas nenhuma dessas linhas correspondentes satisfaz os filtros adicionais definidos para essa entidade de link. Você precisa inverter os filtros adicionais para encontrar linhas pai onde cada linha de entidade de link correspondente satisfaz alguns critérios adicionais. Aprenda a usar all para filtrar valores em tabelas relacionadas
not all Use isso em um elemento de filtro. Restringe os resultados às linhas pai com quaisquer linhas correspondentes na entidade vinculada. Este tipo de link é equivalente a any apesar do nome. Aprenda a usar not all para filtrar valores em tabelas relacionadas
exists Uma variante disso pode fornecer benefícios de inner desempenho. Usa uma condição EXISTS na where cláusula. Use isso quando várias cópias da linha pai não forem necessárias nos resultados. Saiba mais sobre existe e em
in Uma variante disso pode fornecer benefícios de inner desempenho. Usa uma condição IN na where cláusula. Use isso quando várias cópias da linha pai não forem necessárias nos resultados. Saiba mais sobre existe e em
matchfirstrowusingcrossapply Uma variante disso pode fornecer benefícios de inner desempenho. Use esse tipo quando apenas um único exemplo de uma linha correspondente da entidade vinculada for suficiente e várias cópias da linha pai nos resultados não forem necessárias. Saiba mais sobre matchfirstrowusingcrossapply

Elementos pai

Nome Description
entidade Especifica o elemento filho para um elemento fetch, a 'entidade pai' para a consulta. Só é permitida uma entidade.
link-entidade Junta-se a uma tabela relacionada à entidade ou entidade-link para retornar mais colunas com o resultado.

Elementos filho

Nome Ocorrências Description
todos os atributos 0 ou 1 Indica que todos os valores de coluna não nulos para cada linha são retornados. É o mesmo que não adicionar nenhum elemento de atributo. Não recomendamos o uso desse elemento na maioria dos casos.
atributo 0 ou muitos Especifica uma coluna de uma entidade ou entidade de link a ser retornada com uma consulta.
Encomenda 0 ou muitos Especifica uma ordem de classificação para as linhas dos resultados.
link-entidade 0 ou muitos Junta-se a uma tabela relacionada à entidade ou entidade-link para retornar mais colunas com o resultado.
filtrar 0 ou 1 Especifique condições complexas para que uma entidade ou entidade de link seja aplicada a uma consulta.