Freigeben über


Link-Entitätselement

Verbindet eine Tabelle, die sich auf die Entität oder Link-Entität bezieht, um zusätzliche Spalten mit dem Ergebnis zurückzugeben. Wird auch mit Filter-Elementen verwendet, um Bedingungen auf Spaltenwerte in verwandten Tabellen anzuwenden.

Erfahren Sie, wie Sie Tabellen mithilfe von FetchXml verknüpfen.

Beispiele

Die folgenden Beispiele zeigen die Verwendung der link-entity mit verschiedenen Arten von Beziehungen.

Viele-zu-eins-Beziehung

Diese Abfrage gibt Daten aus den Tabellen Konto und Kontakt basierend auf der PrimaryContactId-Suchspalte im Kontodatensatz zurück:

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

Eins-zu-viele-Beziehung

Diese Abfrage gibt Daten aus den Tabellen Kontakt und Konto basierend auf der Kontakt account_primary_contact 1:n-Beziehung zurück:

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

Viele-zu-viele-Beziehung

Diese Abfrage gibt Daten aus den Tabellen SystemUser und Team unter Verwendung der teammembership_association n:n-Beziehung zurück.

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

Attribute

Name des Dataflows Erforderlich? Eigenschaft
name Ja Der logische Name der Bezugstabelle.
to Nein Der logische Name der Spalte im übergeordneten Element, das mit der zugehörigen Tabelle abgeglichen wird, die im from-Attribut angegebenen ist. Obwohl dieses Attribut technisch nicht erforderlich ist, wird es normalerweise verwendet.
from Nein Der logische Name der Spalte aus der zugehörigen Tabelle, die mit der in der im to-Attribut angegebenen Spalte übereinstimmt. Obwohl dieses Attribut technisch nicht erforderlich ist, wird es normalerweise verwendet.
alias Nein Stellt den Namen der zugehörigen Tabelle dar. Wenn Sie keinen Alias festlegen, wird einer für Sie generiert, um sicherzustellen, dass alle Spalten eindeutige Namen haben. Sie können diesen Alias jedoch nicht verwenden, um in anderen Teilen des Abruf-XML auf die Link-Entität zu verweisen. Die automatisch generierten Aliase verwenden das Muster {LogicalName}+{N}, wobei N die fortlaufende Nummer der Link-Entität im Abruf-XML ist, beginnend bei 1.
link-type Nein Der Typ der Linkverwendung. Das Standardverhalten ist innerer Join. Erfahren Sie mehr über die Optionen für Linktypen
intersect Nein Gibt an, dass die link-entity verwendet wird, um Tabellen zu verknüpfen und keine Spalten zurückzugeben, typischerweise für eine n:n-Beziehung. Das Vorhandensein dieses Attributs ändert nichts an der Abfrageausführung. Sie können dieses Attribut zu Ihrer link-entity hinzufügen, wenn Sie einer Tabelle beitreten, aber keine Attributelemente hinzufügen, um zu zeigen, dass dies beabsichtigt ist.

Verwenden der from- und to-Attribute

Am besten legen Sie Werte sowohl für die Attribute from als auch to fest. Beide Attribute werden normalerweise verwendet, um die abzugleichenden Spalten explizit zu definieren. Die Attribute from und to sind jedoch technisch nicht erforderlich.

Hinweis

  • Es ist wichtig, dass die in den Attributen from und to angegebenen Spalten vom gleichen Typ sind. Die Verwendung unterschiedlicher Spaltentypen wird nicht unterstützt. Wenn die Spalten nicht vom gleichen Typ sind, kann die Dataverse-Infrastruktur möglicherweise eine Konvertierung erzwingen, diese Vorgehensweise kann jedoch zu erheblichen Leistungseinbußen führen.

  • Die Bedeutung der Attribute from und to in FetchXml ist das Gegenteil der entsprechenden LinkEntity.LinkFromAttributeName- und LinkEntity.LinkToAttributeName-Eigenschaften, die beim Verfassen von Abfragen mit QueryExpression verwendet werden.

Wenn Sie keines dieser Attribute verwenden und zwischen den beiden Tabellen eine systemische n:n-Beziehung besteht, wählt Dataverse die entsprechenden Schlüsselwerte mithilfe dieser Beziehung aus.

Wenn Sie nur eines der Attribute from oder to angeben, versucht Dataverse, mithilfe der Beziehungsschemadefinitionen zwischen den beiden Tabellen die richtige Beziehung herauszufinden.

Andernfalls erhalten Sie einen Fehler wie den folgenden:

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

Beispielsweise verwenden diese Abfragen die teammembership_association-n:n-Beziehung zwischen systemuser- und Team-Tabellen. In diesem Fall kann Dataverse die Attribute from und to und die link-entity ermitteln, die die Überschneidungstabelle angibt, dies ist nicht erforderlich.

Alle Attribute angeben

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

Dataverse auswählen lassen

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

Verwenden Sie link-type, um Filter auf die zurückgegebenen Datensätze anzuwenden. In der folgenden Tabelle werden die gültigen link-type-Werte beschrieben

Name des Dataflows Eigenschaft
inner Standard. Schränkt die Ergebnisse auf Zeilen mit übereinstimmenden Werten in beiden Tabellen ein.
outer Schließt Ergebnisse aus dem übergeordneten Element ein, die keinen passenden Wert haben.
any Verwenden Sie dies innerhalb eines Filterelements. Beschränkt die Ergebnisse auf übergeordnete Zeilen mit allen übereinstimmenden Zeilen in der verknüpften Entität. Erfahren Sie, wie Sie any zum Filtern von Werten in verwandten Tabellen verwenden
not any Verwenden Sie dies innerhalb eines Filterelements. Beschränkt die Ergebnisse auf übergeordnete Zeilen ohne übereinstimmende Zeilen in der verknüpften Entität. Erfahren Sie, wie Sie not any zum Filtern von Werten in verwandten Tabellen verwenden
all Verwenden Sie dies innerhalb eines Filterelements. Beschränkt die Ergebnisse auf übergeordnete Zeilen, in denen Zeilen mit übereinstimmendem from-Spaltenwert in der Link-Entität vorhanden sind, aber keine dieser übereinstimmenden Zeilen erfüllen die für die Link-Entität definierten zusätzlichen Filter. Sie müssen die zusätzlichen Filter umkehren, um übergeordnete Zeilen zu finden, in denen jede übereinstimmende Link-Entitätszeile einige zusätzliche Kriterien erfüllt. Erfahren Sie, wie Sie all zum Filtern von Werten in verwandten Tabellen verwenden
not all Verwenden Sie dies innerhalb eines Filterelements. Beschränkt die Ergebnisse auf übergeordnete Zeilen mit allen übereinstimmenden Zeilen in der verknüpften Entität. Dieser Linktyp entspricht any trotz des Namens. Erfahren Sie, wie Sie not all zum Filtern von Werten in verwandten Tabellen verwenden
exists Eine Variante von inner kann Leistungsvorteile bieten. Verwendet eine VORHANDEN-Bedingung in der where-Klausel. Verwenden Sie diese Option, wenn in den Ergebnissen nicht mehrere Kopien der übergeordneten Zeile erforderlich sind. Weitere Informationen über „Vorhanden” und „In”
in Eine Variante von inner kann Leistungsvorteile bieten. Verwendet eine IN-Bedingung in der where-Klausel. Verwenden Sie diese Option, wenn in den Ergebnissen nicht mehrere Kopien der übergeordneten Zeile erforderlich sind. Weitere Informationen über „Vorhanden” und „In”
matchfirstrowusingcrossapply Eine Variante von inner kann Leistungsvorteile bieten. Verwenden Sie diesen Typ, wenn nur ein einziges Beispiel einer übereinstimmenden Zeile aus der verknüpften Entität ausreicht und mehrere Kopien der übergeordneten Zeile in den Ergebnissen nicht erforderlich sind. Weitere Informationen über „matchfirstrowusingcrossapply“

Übergeordnete Elemente

Name des Dataflows Eigenschaft
Entität Gibt das untergeordnete Element für ein Fetch-Element an, die „übergeordnete Entität“ für die Abfrage. Es ist nur eine Entität zulässig.
link-entity Verbindet eine Tabelle, die sich auf die Entität oder Link-Entität bezieht, um zusätzliche Spalten mit dem Ergebnis zurückzugeben.

Untergeordnete Elemente

Name des Dataflows Ereignisse Eigenschaft
all-attributes 0 oder 1 Gibt an, dass alle Spaltenwerte für jede Zeile zurückgegeben werden. Es ist dasselbe, als ob keine Attributelemente hinzugefügt würden. In den meisten Fällen empfehlen wir die Verwendung dieses Elements nicht.
attribute 0 oder viele Gibt eine Spalte aus einer Entität oder Link-Entität an, sodass sie einer Abfrage zurückgegeben wird.
order 0 oder viele Gibt eine Sortierreihenfolge für die Zeilen der Ergebnisse an.
link-entity 0 oder viele Verbindet eine Tabelle, die sich auf die Entität oder Link-Entität bezieht, um zusätzliche Spalten mit dem Ergebnis zurückzugeben.
filter 0 oder 1 Geben Sie komplexe Bedingungen für eine Entität oder Link-Entität an, die auf eine Abfrage angewendet werden sollen.

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).