Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verknüpfen Sie Tabellen mithilfe von OData, indem Sie die $expandAbfrageoption auf Navigationseigenschaften anwenden. Mit diesem Ansatz können Sie steuern, welche Daten aus verknüpften Tabellendatensätzen zurückgegeben werden, wenn Sie die Dataverse-Web-API abfragen.
- Sie können bis zu 15
$expand-Optionen in eine Abfrage aufnehmen. Jede$expand-Option erstellt eine Verknüpfung, die die Leistung beeinträchtigen kann. - Abfragen, die Navigations Eigenschaften mit Sammlungswerten erweitern, geben möglicherweise zwischengespeicherte Daten für diese Eigenschaften zurück, die keine kürzlich vorgenommenen Änderungen widerspiegeln. Verwenden Sie den
If-None-MatchHeader mit dem Wertnull, um die Browserzwischenspeicherung außer Kraft zu setzen. Hier finden Sie weitere Details zu HTTP-Kopfzeilen.
Die folgende Tabelle beschreibt die Abfrageoptionen, die Sie in bestimmten $expand-Optionen anwenden können:
| Option | Beschreibung | Mehr erfahren |
|---|---|---|
$select |
Wählen Sie aus, welche Eigenschaften zurückgegeben werden. | Spalten auswählen |
$filter |
Begrenzen Sie für sammlungswertige Navigationseigenschaften die zurückgegebenen Datensätze. | Filterzeilen |
$orderby |
Steuern Sie für sammlungswertige Navigationseigenschaften die Reihenfolge zurückgegebener Datensätze. Wird nicht mit verschachteltem $expand unterstützt. |
Verschachteltes $expand auf sammlungswertigen Navigationseigenschaften |
$top |
Beschränken Sie für sammlungswertige Navigationseigenschaften die Anzahl zurückgegebener Datensätze. Wird nicht mit verschachteltem $expand unterstützt. |
Verschachteltes $expand auf sammlungswertigen Navigationseigenschaften |
$expand |
Erweitern Sie die Navigationseigenschaften im verknüpften Entitätssatz. Die Verwendung von $expand in einer $expand wird als verschachtelte $expand bezeichnet. |
Geschachtelte Erweiterung von einzelwertigen Navigationseigenschaften und Geschachtelte $expand für sammlungswertigen Navigationseigenschaften |
Diese Optionen ist eine Teilmenge der Abfrageoptionen, die unter OData-Version 4.0 Teil 1: Protokoll plus Errata 02 11.2.4.2.1 Optionen erweitern beschrieben sind. Die Optionen $skip, $count, $search und $levels werden für die Dataverse-Web-API nicht unterstützt.
Verwenden Sie diese Optionen mit $expand, indem Sie sie in Klammern nach dem Namen der Navigationseigenschaft hinzufügen. Trennen Sie jede Option mit einem Semikolon (;).
Beispielsweise die folgende Abfrage:
Anfordert die
account.nameEigenschaftTeilt die
AccountTaskssammlungswertigen Navigationseigenschaftsanfrage:- Die
task.subject-Eigenschaft - Wo
task.subjectdie Zeichenfolge „Task“ enthält - Sortiert nach
task.createdonDatum, absteigend
- Die
/accounts?$select=name&$expand=Account_Tasks($select=subject;$filter=contains(subject,'Task');$orderby=createdon desc)
Spalten mit $select begrenzen
Wie bei jeder Abfrage beschränken Sie immer die Spalten, die bei Verwendung von $expand mit $select zurückgegeben werden. Die folgende Abfrage gibt zum Beispiel die Werte contact.fullname und task.subject in den erweiterten Ergebnissen des Typs account zurück:
Anforderung:
GET [Organization URI]/api/data/v9.2/accounts?$select=name
&$expand=primarycontactid($select=fullname),Account_Tasks($select=subject)
Prefer: odata.maxpagesize=1
If-None-Match: null
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Antwort:
HTTP/1.1 200 OK
OData-Version: 4.0
Preference-Applied: odata.maxpagesize=1
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(name,primarycontactid(fullname),Account_Tasks(subject))",
"value": [
{
"@odata.etag": "W/\"80649578\"",
"name": "Litware, Inc. (sample)",
"accountid": "78914942-34cb-ed11-b596-0022481d68cd",
"primarycontactid": {
"fullname": "Susanna Stubberod (sample)",
"contactid": "70bf4d48-34cb-ed11-b596-0022481d68cd"
},
"Account_Tasks": [
{
"@odata.etag": "W/\"80649460\"",
"subject": "Task 1 for Litware",
"_regardingobjectid_value": "78914942-34cb-ed11-b596-0022481d68cd",
"activityid": "f68393c1-34cb-ed11-b597-000d3a993550"
}
],
"Account_Tasks@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts(78914942-34cb-ed11-b596-0022481d68cd)/Account_Tasks?$select=subject"
}
],
"@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts?$select=name&$expand=primarycontactid($select=fullname),Account_Tasks($select=subject)&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b78914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520first%253d%2522%257b78914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}
Unterschiede zwischen einzelwertigen und sammlungswertigen Navigationseigenschaften
Wichtig
Denken Sie daran, dass zwei Arten von Navigationseigenschaften vorhanden sind. Weitere Informationen über Web-API-Navigationseigenschaften
Einzelwertige Navigationseigenschaften entsprechen Suchattributen, die n:1-Beziehungen unterstützen und eine Referenz auf einen anderen Datensatz ermöglichen.
Sammlungswertige Navigationseigenschaften entsprechen 1:n- oder n:n-Beziehungen.
Durch das Erweitern einer Sammlungswert-Navigationseigenschaft kann die Größe der Response so groß werden, dass sie nur schwer vorherzusagen ist. Es ist wichtig, dass Sie Grenzwerte einschließen, um zu steuern, wie viele Daten zurückgegeben werden. Sie können die Anzahl der Datensätze mit Hilfe der Paginierung begrenzen. Weitere Informationen über Paging-Ergebnisse
Es gibt einen erheblichen Unterschied bei der Anwendung von Paging auf geschachtelte $expand Optionen, die auf Eigenschaften der sammlungswertigen Navigation angewendet werden. Weitere Informationen darüber, wie Sie sammlungswertbasierte Navigationseigenschaften erweitern
Einzelwertige Navigationseigenschaften erweitern
Das folgende Beispiel zeigt, wie Kontaktdatensätze abgerufen werden, einschließlich des primären Kontakts und des Benutzers, der die Datensätze erstellt hat.
Anforderung:
GET [Organization URI]/api/data/v9.2/accounts?$select=name
&$expand=primarycontactid($select=contactid,fullname),createdby($select=fullname)
Prefer: odata.maxpagesize=2
If-None-Match: null
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Antwort:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
Preference-Applied: odata.maxpagesize=2
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(name,primarycontactid(contactid,fullname),createdby(fullname))",
"value": [
{
"@odata.etag": "W/\"80649578\"",
"name": "Litware, Inc. (sample)",
"accountid": "78914942-34cb-ed11-b596-0022481d68cd",
"primarycontactid": {
"contactid": "70bf4d48-34cb-ed11-b596-0022481d68cd",
"fullname": "Susanna Stubberod (sample)"
},
"createdby": {
"fullname": "System Administrator",
"systemuserid": "4026be43-6b69-e111-8f65-78e7d1620f5e",
"ownerid": "4026be43-6b69-e111-8f65-78e7d1620f5e"
}
},
{
"@odata.etag": "W/\"80649580\"",
"name": "Adventure Works (sample)",
"accountid": "7a914942-34cb-ed11-b596-0022481d68cd",
"primarycontactid": {
"contactid": "72bf4d48-34cb-ed11-b596-0022481d68cd",
"fullname": "Nancy Anderson (sample)"
},
"createdby": {
"fullname": "System Administrator",
"systemuserid": "4026be43-6b69-e111-8f65-78e7d1620f5e",
"ownerid": "4026be43-6b69-e111-8f65-78e7d1620f5e"
}
}
],
"@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts?$select=name%0A&$expand=primarycontactid($select=contactid,fullname),createdby($select=fullname)&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b7A914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520first%253d%2522%257b78914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}
Die einwertige Navigationseigenschaft createdby liefert eine Instanz des Entitätstyps systemuser zurück. Sowohl systemuserid als auch ownerid-Eigenschaften werden zurückgegeben. Diese Rückgabe erfolgt, weil systemuser von Haupt-EntityType erbt und den ownerid Primärschlüssel über diese Vererbung mit Team-EntityType teilt.
Die Benutzer (SystemUser)-Tabelle hat jedoch den Primärschlüssel SystemUserId. Die beiden Eigenschaften systemuserid und ownerid haben denselben Wert.
Weitere Informationen zur Vererbung von Entitätstyp
Referenzen zurückgeben
Anstatt Daten zurückzugeben, können Sie auch Verweise oder Links zu den zugehörigen Datensätzen zurückgeben, indem Sie die einwertige Navigationseigenschaft mit der /$ref Option erweitern. Das folgende Beispiel gibt JSON-Objekte mit einer @odata.id-Eigenschaft zurück, die eine URL für jeden primären Kontakt enthält.
Anforderung:
GET [Organization URI]/api/data/v9.2/accounts?$select=name
&$expand=primarycontactid/$ref
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Antwort:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
Preference-Applied: odata.maxpagesize=2
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(name,primarycontactid,primarycontactid/$ref())",
"value": [
{
"@odata.etag": "W/\"80649578\"",
"name": "Litware, Inc. (sample)",
"_primarycontactid_value": "70bf4d48-34cb-ed11-b596-0022481d68cd",
"accountid": "78914942-34cb-ed11-b596-0022481d68cd",
"primarycontactid": {
"@odata.id": "[Organization URI]/api/data/v9.2/contacts(70bf4d48-34cb-ed11-b596-0022481d68cd)"
}
},
{
"@odata.etag": "W/\"80649580\"",
"name": "Adventure Works (sample)",
"_primarycontactid_value": "72bf4d48-34cb-ed11-b596-0022481d68cd",
"accountid": "7a914942-34cb-ed11-b596-0022481d68cd",
"primarycontactid": {
"@odata.id": "[Organization URI]/api/data/v9.2/contacts(72bf4d48-34cb-ed11-b596-0022481d68cd)"
}
}
],
"@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts?$select=name%0A&$expand=primarycontactid/$ref&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b7A914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520first%253d%2522%257b78914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}
Sie können die /$ref-Option nur mit Einzelwert-Navigationseigenschaften verwenden. Wenn Sie sie mit einer Navigationseigenschaft mit Sammelwert verwenden, erhalten Sie den folgenden Fehler:
{
"error": {
"code": "0x80060888",
"message": "Expand with $ref is only supported on lookup type navigation property."
}
}
Verschachtelte Erweiterung von einwertigen Navigationseigenschaften
Sie können Navigationseigenschaften mit einem Einzelwert auf mehrere Ebenen erweitern, indem Sie eine $expand-Option in einer anderen $expand-Option verschachteln.
Die folgende Abfrage gibt task Datensätze zurück und erweitert die zugehörigen contact, die mit dem contact verknüpften account und den systemuser, der den account-Datensatz erstellt hat:
Anforderung:
GET [Organization URI]/api/data/v9.2/tasks?$select=subject
&$expand=regardingobjectid_contact_task($select=fullname;
$expand=parentcustomerid_account($select=name;
$expand=createdby($select=fullname)))
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Prefer: odata.maxpagesize=2
Antwort:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
Preference-Applied: odata.maxpagesize=2
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#tasks(subject,regardingobjectid_contact_task(fullname,parentcustomerid_account(name,createdby(fullname))))",
"value": [
{
"@odata.etag": "W/\"80730855\"",
"subject": "Task 1 for Susanna Stubberod",
"activityid": "e9a8c72c-dbcc-ed11-b597-000d3a993550",
"regardingobjectid_contact_task": {
"fullname": "Susanna Stubberod (sample)",
"contactid": "70bf4d48-34cb-ed11-b596-0022481d68cd",
"parentcustomerid_account": {
"name": "Litware, Inc. (sample)",
"accountid": "78914942-34cb-ed11-b596-0022481d68cd",
"createdby": {
"fullname": "System Administrator",
"systemuserid": "4026be43-6b69-e111-8f65-78e7d1620f5e",
"ownerid": "4026be43-6b69-e111-8f65-78e7d1620f5e"
}
}
}
},
{
"@odata.etag": "W/\"80730861\"",
"subject": "Task 2 for Susanna Stubberod",
"activityid": "c206f534-dbcc-ed11-b597-000d3a993550",
"regardingobjectid_contact_task": {
"fullname": "Susanna Stubberod (sample)",
"contactid": "70bf4d48-34cb-ed11-b596-0022481d68cd",
"parentcustomerid_account": {
"name": "Litware, Inc. (sample)",
"accountid": "78914942-34cb-ed11-b596-0022481d68cd",
"createdby": {
"fullname": "System Administrator",
"systemuserid": "4026be43-6b69-e111-8f65-78e7d1620f5e",
"ownerid": "4026be43-6b69-e111-8f65-78e7d1620f5e"
}
}
}
}
],
"@odata.nextLink": "[Organization URI]/api/data/v9.2/tasks?$select=subject&$expand=regardingobjectid_contact_task($select=fullname;$expand=parentcustomerid_account($select=name;$expand=createdby($select=fullname)))&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253cactivityid%2520last%253d%2522%257bC206F534-DBCC-ED11-B597-000D3A993550%257d%2522%2520first%253d%2522%257bE9A8C72C-DBCC-ED11-B597-000D3A993550%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}
Sammlungswertige Navigationseigenschaften erweitern
Es gibt einige wichtige Unterschiede in der Antwort, die davon abhängen, ob Sie verschachteltes $expand mit einer Navigationseigenschaft mit Sammlungswert irgendwo in Ihrer Abfrage verwenden.
| Verschachteltes $expand | Einzelnes $expand | |
|---|---|---|
| Paging | Paging in erweiterten Zeilen. | Paging nur bei EntitySet-Ressource.
<property name>@odata.nextLink-URLs für erweiterte Zeilen enthalten keine Paging-Informationen. |
$top oder $orderby unterstützt |
Nein | Ja |
| Unterstützte N:N-Beziehungen | Nein Siehe Verschachtelte $expand mit N:N-Beziehungen | Ja |
Einzelnes $expand auf sammlungswertigen Navigationseigenschaften
Wenn Sie nur eine einzelne Ebene $expandverwenden, wendet der Dienst keine Auslagerung auf die erweiterten Zeilen an. Wenn Sie den Anforderungsheader Prefer: odata.maxpagesize einschließen, wendet der Dienst die Auslagerung nur auf die EntitySet-Ressource der Abfrage an.
Jede erweiterte Navigationseigenschaft mit Sammlungswert gibt eine <property>@odata.nextLink-URL zurück, die keine Paging-Informationen enthält. Diese URL stellt die gefilterte Auflistung für die Beziehung mit den angefügten Abfrageoptionen dar. Sie können diese URL verwenden, um eine separate GET Anfrage zu senden, und sie gibt die gleichen Zeilen zurück, die in Ihrer ursprünglichen Anfrage zurückgegeben wurden. Sie können Paging auf diese Anforderung anwenden.
Da der Dienst kein Paging auf die erweiterten Datensätze anwendet, können für jede erweiterte Sammlungswert-Navigationseigenschaft bis zu 5.000 verknüpfte Tabelleneinträge zurückgegeben werden. Je nach Ihren Daten und der Abfrage kann diese Menge groß sein. Das Zurückgeben so vieler Daten kann die Leistung beeinträchtigen und möglicherweise einen Timeout Ihrer Anfrage verursachen. Seien Sie vorsichtig bei der Erstellung Ihrer Abfragen. Verwenden Sie die Optionen $top, $filter und $orderby, um die Gesamtanzahl der zurückgegebenen Datensätze zu steuern.
Das folgende Beispiel enthält eine einfache Erweiterung der Account_Tasks und contact_customer_accounts beim Abrufen von Datensätzen für Konten. Die Abfragekopfzeile Prefer: odata.maxpagesize=1 stellt sicher, dass nur ein Datensatz des Kontos auf der ersten Seite zurückgegeben wird.
Anforderung:
GET [Organization URI]/api/data/v9.2/accounts?$select=name,accountid
&$expand=Account_Tasks($select=subject),contact_customer_accounts($select=fullname)
Prefer: odata.maxpagesize=1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Antwort:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
Preference-Applied: odata.maxpagesize=1
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(name,accountid,Account_Tasks(subject),contact_customer_accounts(fullname))",
"value": [
{
"@odata.etag": "W/\"80649578\"",
"name": "Litware, Inc. (sample)",
"accountid": "78914942-34cb-ed11-b596-0022481d68cd",
"Account_Tasks": [
{
"@odata.etag": "W/\"80730894\"",
"subject": "Task 1 for Litware",
"_regardingobjectid_value": "78914942-34cb-ed11-b596-0022481d68cd",
"activityid": "be9f6557-e2cc-ed11-b597-000d3a993550"
},
{
"@odata.etag": "W/\"80730903\"",
"subject": "Task 2 for Litware",
"_regardingobjectid_value": "78914942-34cb-ed11-b596-0022481d68cd",
"activityid": "605dbd65-e2cc-ed11-b597-000d3a993550"
},
{
"@odata.etag": "W/\"80730909\"",
"subject": "Task 3 for Litware",
"_regardingobjectid_value": "78914942-34cb-ed11-b596-0022481d68cd",
"activityid": "a718856c-e2cc-ed11-b597-000d3a993550"
}
],
"Account_Tasks@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts(78914942-34cb-ed11-b596-0022481d68cd)/Account_Tasks?$select=subject",
"contact_customer_accounts": [
{
"@odata.etag": "W/\"80648695\"",
"fullname": "Susanna Stubberod (sample)",
"_parentcustomerid_value": "78914942-34cb-ed11-b596-0022481d68cd",
"contactid": "70bf4d48-34cb-ed11-b596-0022481d68cd"
}
],
"contact_customer_accounts@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts(78914942-34cb-ed11-b596-0022481d68cd)/contact_customer_accounts?$select=fullname"
}
],
"@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts?$select=name,accountid&$expand=Account_Tasks($select=subject),contact_customer_accounts($select=fullname)&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b7A914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520first%253d%2522%257b78914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}
Vergleichen Sie diese Antwort mit dem folgenden Beispiel, das eine verschachtelte $expand enthält. Um festzustellen, dass nur die @odata.nextLink URL für das Kontoergebnis Paginginformationen enthält, scrollen Sie horizontal in die Beispielantwort.
Verschachteltes $expand auf sammlungswertigen Navigationseigenschaften
Wenn Sie ein geschachteltes $expand an einer beliebigen Stelle in Ihrer Abfrage verwenden und den Anforderungsheader Prefer: odata.maxpagesize einschließen, wendet Dataverse Paging auf jede der erweiterten Auflistungen an.
Jede erweiterte Navigationseigenschaft mit Sammlungswert gibt eine URL <property>@odata.nextLink zurück, die Informationen zum Paging enthält. Sie können diese URL verwenden, um eine separate GETAnfrage zu senden, und sie gibt den nächsten Satz von Datensätzen zurück, die nicht in Ihrer ursprünglichen Anfrage enthalten waren.
Sie können die Optionen $top oder $orderby nicht verwenden, um die Gesamtzahl der Datensätze zu begrenzen, die mit einem verschachtelten $expand zurückgegeben werden. Der Dienst gibt den folgenden Fehler zurück, wenn Sie diese Optionen verwenden:
{
"error": {
"code": "0x80060888",
"message": "Only $select and $filter clause can be provided while doing $expand on many-to-one relationship or nested one-to-many relationship."
}
}
Das folgende Beispiel basiert auf dem vorherigen Beispiel und verwendet die gleichen Daten. Der einzige Unterschied ist der Zusatz in der URL dieser verschachtelten $expand auf einer einwertigen Navigationseigenschaft, um den besitzenden Benutzer des Kontakts zurückzugeben: ;$expand=owninguser($select=fullname).
Anforderung:
GET [Organization URI]/api/data/v9.2/accounts?$select=name,accountid
&$expand=Account_Tasks($select=subject),contact_customer_accounts($select=fullname;
$expand=owninguser($select=fullname))
Prefer: odata.maxpagesize=1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Antwort:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
Preference-Applied: odata.maxpagesize=1
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(name,accountid,Account_Tasks(subject),contact_customer_accounts(fullname,owninguser(fullname)))",
"value": [
{
"@odata.etag": "W/\"80649578\"",
"name": "Litware, Inc. (sample)",
"accountid": "78914942-34cb-ed11-b596-0022481d68cd",
"Account_Tasks": [
{
"subject": "Task 1 for Litware",
"activityid": "be9f6557-e2cc-ed11-b597-000d3a993550"
}
],
"Account_Tasks@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts(78914942-34cb-ed11-b596-0022481d68cd)/Account_Tasks?$select=subject,description&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%2520countOfRecords%253d%25221%2522%253e%253cactivityid%2520last%253d%2522%257bbe9f6557-e2cc-ed11-b597-000d3a993550%257d%2522%2520first%253d%2522%257bbe9f6557-e2cc-ed11-b597-000d3a993550%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E",
"contact_customer_accounts": [
{
"fullname": "Susanna Stubberod (sample)",
"contactid": "70bf4d48-34cb-ed11-b596-0022481d68cd",
"owninguser": {
"fullname": "System Administrator",
"systemuserid": "4026be43-6b69-e111-8f65-78e7d1620f5e",
"ownerid": "4026be43-6b69-e111-8f65-78e7d1620f5e"
}
}
],
"contact_customer_accounts@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts(78914942-34cb-ed11-b596-0022481d68cd)/contact_customer_accounts?$select=fullname&$expand=owninguser($select=fullname)&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%2520countOfRecords%253d%25221%2522%253e%253ccontactid%2520last%253d%2522%257b70bf4d48-34cb-ed11-b596-0022481d68cd%257d%2522%2520first%253d%2522%257b70bf4d48-34cb-ed11-b596-0022481d68cd%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}
],
"@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts?$select=name,accountid&$expand=Account_Tasks($select=subject,description),contact_customer_accounts($select=fullname;$expand=owninguser($select=fullname))&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%2520countOfRecords%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b78914942-34cb-ed11-b596-0022481d68cd%257d%2522%2520first%253d%2522%257b78914942-34cb-ed11-b596-0022481d68cd%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}
Vergleichen Sie diese Antwort mit dem vorhergehenden Beispiel, das kein verschachteltes $expand verwendet. In dieser Antwort:
- Der
Prefer: odata.maxpagesize=1-Anforderungsheader wird auf dietask-Datensätze angewendet, die mitAccount_Taskszurückgegeben werden. - Die Antwort gibt nur eine Aufgabe anstelle von drei zurück.
- Die URL
Account_Tasks@odata.nextLinkgibt die nächsten beiden Aufgaben zurück. - Scrollen Sie horizontal durch die Beispielantwort, um zu sehen, dass
Account_Tasks@odata.nextLink,contact_customer_accounts@odata.nextLinkund@odata.nextLinkURLs Seiteninformationen enthalten.
Verschachtelte $expand mit N:N-Beziehungen
Wenn eine Auflistungswert-Navigationseigenschaft eine N:N-Beziehung darstellt, erhalten Sie beim Verwenden geschachtelter $expand Anweisungen den folgenden Fehler:
{
"error": {
"code": "0x80060888",
"message": "The navigation property '<NAME>' cannot be expanded. Only many-to-one relationships are supported for nested expansion."
}
}
Wenn Sie z. B. die Dynamics-Leadtabelle verwenden, die eine contactleads_association N:N-Beziehung mit der Kontakttabelle aufweist, gibt die folgende Abfrage den Fehler zurück, da sie ;$expand=createdby enthält.
GET [Organization URI]/contacts?$select=fullname$expand=contactleads_association($select=fullname;$expand=createdby)
Um diesen Fehler zu vermeiden, erstellen Sie die Abfrage mithilfe von FetchXml. Zum Beispiel:
<fetch>
<entity name='contact'>
<attribute name='fullname' />
<link-entity name='contactleads'
from='contactid'
to='contactid'
alias='cl'>
<link-entity name='lead'
from='leadid'
to='leadid'
alias='lead'>
<attribute name='fullname' />
<link-entity name='systemuser'
from='systemuserid'
to='createdby'
alias='systemuser'>
<attribute name='fullname' />
</link-entity>
</link-entity>
</link-entity>
</entity>
</fetch>
Weitere Informationen zum Verknüpfen von Tabellen mithilfe von N:N-Beziehungen mit FetchXml
Nächste Schritte
Erfahren Sie, wie Sie Zeilen sortieren.