Partager via


élément link-entity

Joint une table liée à l’entité ou à l’entité de liaison pour retourner des colonnes supplémentaires avec le résultat. Également utilisé avec des éléments de filtre pour appliquer des conditions sur les valeurs de colonne dans les tables associées.

Découvrez comment joindre des tables à l’aide de FetchXml.

Examples

Les exemples suivants montrent l’utilisation link-entity avec différents types de relations.

Relation plusieurs-à-un

Cette requête retourne des données à partir des tables de compte et de contact en fonction de la colonne de recherche PrimaryContactId dans l’enregistrement du compte :

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

Relation un-à-plusieurs

Cette requête retourne les données des tables de contact et de compte en fonction de la relation contact account_primary_contact un-à-plusieurs.

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

Relation plusieurs-à-plusieurs

Cette requête retourne des données des tables SystemUser et Team à l’aide de la teammembership_association relation plusieurs-à-plusieurs.

<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

Nom Obligatoire ? Descriptif
name Oui Le nom logique de la table associée.
to Non Nom logique de la colonne dans l’élément parent à mettre en correspondance avec la colonne de table associée spécifiée dans l’attribut from . Bien qu’il ne soit pas techniquement nécessaire, cet attribut est généralement utilisé.
from Non Nom logique de la colonne de la table associée qui correspond à la colonne spécifiée dans l’attribut to . Bien qu’il ne soit pas techniquement nécessaire, cet attribut est généralement utilisé.
alias Non Représente le nom de la table associée. Si vous ne définissez pas d’alias, un alias sera généré pour vous assurer que toutes les colonnes ont des noms uniques, mais vous ne pourrez pas utiliser cet alias pour référencer l’entité de lien dans d’autres parties du code XML d’extraction. Les alias générés automatiquement utilisent le modèle {LogicalName}+{N}, où N est le nombre séquentiel de l’entité de liaison dans le code XML d’extraction à partir de 1.
link-type Non Type d’utilisation de lien. Le comportement par défaut est interne. En savoir plus sur les options de type de lien
intersect Non Indique que l’objet link-entity est utilisé pour joindre des tables et ne retourne aucune colonne, généralement pour une relation plusieurs-à-plusieurs. L’existence de cet attribut ne modifie pas l’exécution de la requête. Vous pouvez ajouter cet attribut à votre link-entity lorsque vous joignez une table, mais n’incluez aucun élément d’attribut pour montrer que cela est intentionnel.

Utilisation from et to attributs

Il est préférable de définir des valeurs pour les attributs et to les from attributs. Ces deux attributs sont généralement utilisés pour définir explicitement les colonnes à mettre en correspondance. Toutefois, les attributs et to les from attributs ne sont pas techniquement requis.

Note

  • Il est important que les colonnes spécifiées dans les attributs et to les from attributs soient de même type. L’utilisation de différents types de colonnes n’est pas prise en charge. Lorsque les colonnes ne sont pas du même type, l’infrastructure Dataverse peut être en mesure de forcer une conversion, mais cette pratique peut entraîner une pénalité significative des performances.

  • La signification des from attributs et to des attributs dans FetchXml est l’opposé des propriétés LinkEntity.LinkFromAttributeName et LinkEntity.LinkToAttributeName utilisées lors de la composition de requêtes à l’aide de QueryExpression.

Si vous n’utilisez pas l’un de ces attributs et qu’une relation système plusieurs-à-plusieurs existe entre les deux tables, Dataverse sélectionne les valeurs de clé appropriées à l’aide de cette relation.

Si vous spécifiez uniquement l’un from des ou to attributs, Dataverse tente de déterminer la relation correcte à l’aide des définitions de schéma de relation entre les deux tables.

Sinon, vous obtenez l’erreur suivante :

Code : 0x80041102
Message : 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.

Par exemple, ces deux requêtes utilisent la teammembership_association relation plusieurs-à-plusieurs entre les tables systemuser et team . Dans ce cas, Dataverse peut utiliser les attributs et to les from attributs qui link-entity spécifient la table d’intersection n’est pas nécessaire.

Spécifier tous les attributs

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

Laisser Dataverse choisir

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

Permet link-type d’appliquer des filtres sur les enregistrements retournés. Le tableau suivant décrit les valeurs valides link-type :

Nom Descriptif
inner Default. Limite les résultats aux lignes avec des valeurs correspondantes dans les deux tables.
outer Inclut les résultats de l’élément parent qui n’ont pas de valeur correspondante.
any Utilisez-le dans un élément de filtre. Limite les résultats aux lignes parentes avec toutes les lignes correspondantes dans l’entité liée. Apprenez à utiliser any pour filtrer des valeurs sur des tables associées
not any Utilisez-le dans un élément de filtre. Limite les résultats aux lignes parentes sans lignes correspondantes dans l’entité liée. Apprenez à utiliser not any pour filtrer des valeurs sur des tables associées
all Utilisez-le dans un élément de filtre. Limite les résultats aux lignes parentes où les lignes avec valeur de colonne correspondante from existent dans l’entité de lien, mais aucune de ces lignes correspondantes ne satisfait les filtres supplémentaires définis pour cette entité de lien. Vous devez inverser les filtres supplémentaires pour rechercher les lignes parentes où chaque ligne d’entité de lien correspondante répond à certains critères supplémentaires. Apprenez à utiliser all pour filtrer des valeurs sur des tables associées
not all Utilisez-le dans un élément de filtre. Limite les résultats aux lignes parentes avec toutes les lignes correspondantes dans l’entité liée. Ce type de lien est équivalent au any nom. Apprenez à utiliser not all pour filtrer des valeurs sur des tables associées
exists Variante de ce qui peut offrir des avantages en matière de inner performances. Utilise une condition EXISTS dans la where clause. Utilisez cette option lorsque plusieurs copies de la ligne parente ne sont pas nécessaires dans les résultats. En savoir plus sur l’existence et dans
in Variante de ce qui peut offrir des avantages en matière de inner performances. Utilise une condition IN dans la where clause. Utilisez cette option lorsque plusieurs copies de la ligne parente ne sont pas nécessaires dans les résultats. En savoir plus sur l’existence et dans
matchfirstrowusingcrossapply Variante de ce qui peut offrir des avantages en matière de inner performances. Utilisez ce type lorsqu’un seul exemple de ligne correspondante de l’entité liée est suffisant et que plusieurs copies de la ligne parente dans les résultats ne sont pas nécessaires. En savoir plus sur matchfirstrowusingcrossapply

Éléments parents

Nom Descriptif
entité Spécifie l’élément enfant d’un élément fetch, l’entité parente de la requête. Une seule entité est autorisée.
link-entity Joint une table liée à l’entité ou à l’entité de liaison pour retourner davantage de colonnes avec le résultat.

Éléments enfants

Nom Occurrences Descriptif
tous les attributs 0 ou 1 Indique que toutes les valeurs de colonne non null pour chaque ligne sont retournées. Il est identique à l’ajout d’éléments d’attribut. Nous vous déconseillons d’utiliser cet élément pour la plupart des cas.
attribut 0 ou plusieurs Spécifie une colonne d’une entité ou d’une entité de liaison à retourner avec une requête.
commande 0 ou plusieurs Spécifie un ordre de tri pour les lignes des résultats.
link-entity 0 ou plusieurs Joint une table liée à l’entité ou à l’entité de liaison pour retourner davantage de colonnes avec le résultat.
filtre 0 ou 1 Spécifiez des conditions complexes pour une entité ou une entité de liaison à appliquer à une requête.