Freigeben über


Linkentitä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.

Examples

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

n:1-Beziehung

Diese Abfrage gibt Daten aus den Konto - und Kontakttabellen basierend auf der PrimaryContactId-Nachschlagespalte 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>

1:n-Beziehung

Diese Abfrage gibt Daten aus den Kontakt - und Kontotabellen 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>

n:n-Beziehung

Diese Abfrage gibt Daten aus den Tabellen "SystemUser " und " Team " mithilfe der teammembership_association m: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 Erforderlich? Description
name Yes Der logische Name der Bezugstabelle.
to Nein Der logische Name der Spalte im übergeordneten Element soll mit der Tabellenspalte, die im -Attribut angegeben ist, übereinstimmen. Obwohl es technisch nicht erforderlich ist, wird dieses Attribut in der Regel verwendet.
from Nein Der logische Name der Spalte aus der verknüpften Tabelle, die der im to Attribut angegebenen Spalte entspricht. Obwohl es technisch nicht erforderlich ist, wird dieses Attribut in der Regel verwendet.
alias Nein Stellt den Namen der verknüpften Tabelle dar. Wenn Sie keinen Alias festlegen, wird ein Alias generiert, um sicherzustellen, dass alle Spalten eindeutige Namen haben, aber Sie können diesen Alias nicht verwenden, um auf die Verknüpfungsentität in anderen Teilen des Abruf-XML zu verweisen. Die automatisch generierten Aliase verwenden das Muster {LogicalName}+{N}. Dabei N handelt es sich um die sequenzielle Nummer der Verknüpfungsentität im Abruf-XML ab 1.
link-type Nein Der Typ der Linkverwendung. Das Standardverhalten ist inner. Informationen zu Linktypoptionen
intersect Nein Gibt an, dass die link-entity Daten verwendet werden, um Tabellen zu verknüpfen und keine Spalten zurückzugeben, in der Regel für eine n:n-Beziehung. Das Vorhandensein dieses Attributs ändert die Abfrageausführung nicht. Sie können dieses Attribut zu Ihrem link-entity Attribut hinzufügen, wenn Sie eine Tabelle verbinden, aber keine Attributelemente einschließen, um anzuzeigen, dass dies beabsichtigt ist.

Verwenden from und to Attribute

Es ist am besten, Werte für die from und to Attribute festzulegen. Beide Attribute werden in der Regel verwendet, um die spalten explizit zu definieren, die übereinstimmen sollen. from Die Attribute sind to jedoch technisch nicht erforderlich.

Hinweis

  • Es ist wichtig, dass die spalten, die in den from und to Attributen angegeben sind, denselben Typ aufweisen. Die Verwendung verschiedener Spaltentypen wird nicht unterstützt. Wenn die Spalten nicht denselben Typ aufweisen, kann die Dataverse-Infrastruktur möglicherweise eine Konvertierung erzwingen, diese Vorgehensweise kann jedoch zu einer erheblichen Leistungseinbuße führen.

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

Wenn Sie keine dieser Attribute verwenden und eine n:n-Beziehung zwischen den beiden Tabellen vorhanden ist, wählt Dataverse anhand dieser Beziehung die entsprechenden Schlüsselwerte aus.

Wenn Sie nur eines der fromto Attribute angeben, versucht Dataverse, die richtige Beziehung mithilfe der Beziehungsschemadefinitionen zwischen den beiden Tabellen zu ermitteln.

Andernfalls erhalten Sie die folgende Fehlermeldung:

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 beide Abfragen die teammembership_association m:n-Beziehung zwischen Systembenutzer - und Teamtabellen . In diesem Fall kann Dataverse die from Und to Attribute ausarbeiten, und die, die link-entity die Überschneiden-Tabelle angibt, ist nicht erforderlich.

Angeben aller Attribute

<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

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

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

Name Description
inner Standard. Schränkt Ergebnisse auf Zeilen mit übereinstimmenden Werten in beiden Tabellen ein.
outer Enthält Ergebnisse aus dem übergeordneten Element, das keinen übereinstimmenden Wert aufweist.
any Verwenden Sie dies innerhalb eines Filterelements. Beschränkt die Ergebnisse auf übergeordnete Zeilen mit allen übereinstimmenden Zeilen in der verknüpften Entität. Informationen zum Filtern von any Werten in verknüpften Tabellen
not any Verwenden Sie dies innerhalb eines Filterelements. Beschränkt die Ergebnisse auf übergeordnete Zeilen ohne übereinstimmende Zeilen in der verknüpften Entität. Informationen zum Filtern von not any Werten in verknüpften Tabellen
all Verwenden Sie dies innerhalb eines Filterelements. Beschränkt die Ergebnisse auf übergeordnete Zeilen, bei denen Zeilen mit übereinstimmenden from Spaltenwert in der Verknüpfungsentität vorhanden sind, aber keine dieser übereinstimmenden Zeilen die zusätzlichen Filter erfüllen, die für diese Verknüpfungsentität definiert sind. Sie müssen die zusätzlichen Filter umkehren , um nach übergeordneten Zeilen zu suchen, bei denen jede übereinstimmende Verknüpfungsentitätszeile einige zusätzliche Kriterien erfüllt. Informationen zum Filtern von all Werten in verknüpften Tabellen
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. Informationen zum Filtern von not all Werten in verknüpften Tabellen
exists Eine Variante von inner, die Leistungsvorteile bieten kann. Verwendet eine EXISTS-Bedingung in der where Klausel. Verwenden Sie dies, wenn mehrere Kopien der übergeordneten Zeile in den Ergebnissen nicht erforderlich sind. Weitere Informationen zu den Funktionen 'exists' und 'in'
in Eine Variante von inner, die Leistungsvorteile bieten kann. Verwendet eine IN-Bedingung in der where Klausel. Verwenden Sie dies, wenn mehrere Kopien der übergeordneten Zeile in den Ergebnissen nicht erforderlich sind. Weitere Informationen zu den Funktionen 'exists' und 'in'
matchfirstrowusingcrossapply Eine Variante von inner, die Leistungsvorteile bieten kann. Verwenden Sie diesen Typ, wenn nur ein einzelnes Beispiel einer übereinstimmenden Zeile aus der verknüpften Entität ausreichend ist und mehrere Kopien der übergeordneten Zeile in den Ergebnissen nicht erforderlich sind. Erfahren Sie mehr über "matchfirstrowusingcrossapply"

Übergeordnete Elemente

Name Description
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 Verknüpft eine Tabelle im Zusammenhang mit der Entität oder Verknüpfungsentität , um weitere Spalten mit dem Ergebnis zurückzugeben.

Untergeordnete Elemente

Name Vorkommnisse Description
Alle Attribute 0 oder 1 Gibt an, dass alle Nicht-Null-Spaltenwerte für jede Zeile zurückgegeben werden. Es ist identisch mit dem Hinzufügen von Attributelementen. Es wird nicht empfohlen, dieses Element für die meisten Fälle zu verwenden.
Attribut 0 oder viele Gibt eine Spalte aus einer Entität oder Link-Entität an, sodass sie einer Abfrage zurückgegeben wird.
Bestellung 0 oder viele Gibt eine Sortierreihenfolge für die Zeilen der Ergebnisse an.
link-entity 0 oder viele Verknüpft eine Tabelle im Zusammenhang mit der Entität oder Verknüpfungsentität , um weitere Spalten mit dem Ergebnis zurückzugeben.
Filter 0 oder 1 Geben Sie komplexe Bedingungen für eine Entität oder Verknüpfungsentität an, die auf eine Abfrage angewendet werden soll.