Partage via


Élément link-entity

Joint une table liée à l’élément entity ou link-entity pour renvoyer des colonnes supplémentaires avec le résultat. Également utilisé avec les éléments de filtre pour appliquer des conditions aux valeurs de colonne dans les tables associées.

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

Exemples

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

Relation plusieurs-à-un

Cette requête renvoie des données à partir des tables compte et contact basées sur la colonne de recherche PrimaryContactId dans l’enregistrement de 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 renvoie des données à partir des tables contact et compte basées sur la relation un-à-plusieurs account_primary_contact du contact.

<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 renvoie des données à partir des tables SystemUser et Team en utilisant la relation plusieurs-à-plusieurs teammembership_association.

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

Attributs

Nom Obligatoire ? Description
name Oui Le nom logique de la table associée.
to Non Le 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 Le 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 No Représente le nom de la table associée. Si vous ne définissez pas d’alias, il en sera généré un pour vous pour garantir que toutes les colonnes ont des noms uniques, mais vous ne pourrez pas utiliser cet alias pour faire référence à l’entité de lien dans d’autres parties du XML d’extraction. Les alias générés automatiquement utilisent le modèle {LogicalName}+{N}, où N est le numéro séquentiel de link-entity dans le XML d’extraction à partir de 1.
link-type No Le type de lien utilisé. Le comportement par défaut est interne. En savoir plus sur les options link-type
intersect No Indique que link-entity est utilisé pour joindre des tables et ne renvoyer aucune colonne, normalement 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 des attributs from et to

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

Notes

  • Il est important que les colonnes spécifiées dans les attributs from et to soient du 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 dégradation significative des performances.

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

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

Si vous spécifiez un seul des from ou to les attributs, Dataverse tente de déterminer la relation correcte en utilisant les définitions du schéma de relation entre les deux tables.

Sinon, vous obtiendrez 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, les deux requêtes utilisent la relation plusieurs-à-plusieurs teammembership_association entre les tables systemuser et team. Dans ce cas, Dataverse peut utiliser les attributs from et to et le link-entity qui spécifie 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>

Utilisez link-type pour appliquer des filtres sur les enregistrements renvoyés. Le tableau suivant décrit les valeurs link-type valides :

Nom Description
inner Par défaut. Restreint 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 ce paramètre dans un élément de filtre. Restreint les résultats aux lignes parentes avec toutes les lignes correspondantes dans l’entité liée. Découvrez comment utiliser any pour filtrer les valeurs dans les tables associées
not any Utilisez ce paramètre dans un élément de filtre. Restreint les résultats aux lignes parentes sans lignes correspondantes dans l’entité liée. Découvrez comment utiliser not any pour filtrer les valeurs dans les tables associées
all Utilisez ce paramètre dans un élément de filtre. Restreint les résultats aux lignes parentes où il existe des lignes avec une valeur de colonne from correspondante dans l’entité de lien, mais aucune de ces lignes correspondantes ne satisfait aux filtres supplémentaires définis pour cette entité de lien. Vous devez inverser les filtres supplémentaires pour trouver des lignes parentes où chaque ligne d’entité de lien correspondante satisfait à certains critères supplémentaires. Découvrez comment utiliser all pour filtrer les valeurs dans les tables associées
not all Utilisez ce paramètre dans un élément de filtre. Restreint les résultats aux lignes parentes avec toutes les lignes correspondantes dans l’entité liée. Ce type de lien est équivalent à any malgré le nom. Découvrez comment utiliser not all pour filtrer les valeurs dans les tables associées
exists Une variante de inner qui peut offrir des avantages en termes de performances. Utilise une condition EXISTS dans la clause where. Utilisez-la lorsque plusieurs copies de la ligne parente ne sont pas nécessaires dans les résultats. En savoir plus sur exists et in
in Une variante de inner qui peut offrir des avantages en termes de performances. Utilise une condition IN dans la clause where. Utilisez-la lorsque plusieurs copies de la ligne parente ne sont pas nécessaires dans les résultats. En savoir plus sur exists et in
matchfirstrowusingcrossapply Une variante de inner qui peut offrir des avantages en termes de 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 Description
entity 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’élément entity ou link-entity pour renvoyer plus de colonnes avec le résultat.

Éléments enfants

Nom Occurrences Description
all-attributes 0 ou 1 Indique que toutes les valeurs de colonne non nulles pour chaque ligne sont renvoyées. Cela revient à n’ajouter aucun élément d’attribut. Nous déconseillons d’utiliser cet élément dans la plupart des cas.
attribute 0 ou plusieurs Spécifie une colonne d’un élément entity ou link-entity à renvoyer avec une requête.
order 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’élément entity ou link-entity pour renvoyer plus de colonnes avec le résultat.
filter 0 ou 1 Spécifiez des conditions complexes pour un élément entity ou link-entity à appliquer à une requête.

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).