Zuordnen und Aufheben der Zuordnung von Tabellenzeilen über die Web-API

Sie können einzelne Datensätze in Tabellenzeilen mit anderen Datensätzen verknüpfen, indem Sie Beziehungen verwenden, die zwischen den Tabellendefinitionen vorhanden sind. In OData werden die Beziehungen als Navigationseigenschaften ausgedrückt.

Sie können herausfinden, welche Navigationseigenschaften im $metadata-Dienstdokument vorhanden sind. Siehe Web API-Navigationseigenschaften. Für bestehende Dataverse-Tabellen, siehe Web API EntityType Reference, sehen Sie sich für jeden Entitätstyp die aufgelisteten einzelwertigen und sammlungswertigen Navigationseigenschaften an.

Die folgende Tabelle beschreibt die drei Typen von Beziehungen zwischen Tabellen in Dataverse.

Type Beschreibung des Dataflows Beispiel
Eine zu Vielen Einem Datensatz können viele Datensätze zugeordnet sein. Ein account-Datensatz kann viele contact-Datensätze haben in der contact_customer_accounts sammlungswertige Navigationseigenschaft.
n:1 Einem Datensatz können viele Datensätze zugeordnet sein.

Eine N:1-Beziehung ist die Spiegelung der 1:N-Beziehung. Es gibt nur eine Beziehung.
Viele contact-Datensätze können mit einem einzigen account-Datensatz verknüpft sein unter Verwendung der parentcustomerid_account einzelwertigen Navigationseigenschaft.
Viele zu Viele Vielen Datensätzen können viele Datensätze zugeordnet sein. Jede security role (role) kann Verweise auf die Definition von einem systemuser enthalten.
Beide diese Tabellen haben eine systemuserroles_association sammlungswertige Navigationseigenschaft.

Einzelwertige Navigationseigenschaften verwenden

Für vorhandene Aufzeichnungen auf der viele Seite einer 1:n- oder n:1-Beziehung können Sie den Datensatz zuordnen, indem Sie einen Uri-Verweis auf den anderen Datensatz setzen. Der einfachste und gebräuchlichste Weg, dies zu tun, ist das Anhängen der @odata.bind-Anmerkung anden Namen der einwertigen Navigationseigenschaft und anschließendes Festlegen des Werts als Uri für den anderen Datensatz in einer PATCH-Anfrage.

Mit einer einzelwertigen Partner-Navigationseigenschaft verknüpfen

Um zum Beispiel einen contact-Datensatz einem account hinzuzufügen unter Verwendung der parentcustomerid_account einzelwertigen Navigationseigenschaft:

Anforderung:

PATCH [Organization Uri]/api/data/v9.2/contacts(cf9eaaef-f718-ed11-b83e-00224837179f) HTTP/1.1
If-Match: *
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "parentcustomerid_account@odata.bind": "accounts(ce9eaaef-f718-ed11-b83e-00224837179f)"
}

Antwort:

HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/contacts(cf9eaaef-f718-ed11-b83e-00224837179f)

Wie beschrieben in Tabellenzeilen beim Erstellen zuordnen, können auf die gleiche Weise auch neue Datensätze mit bestehenden Datensätzen verknüpft werden.

Zuordnung mit einer einzelwertigen Partner-Navigationseigenschaft aufheben

Wenn Sie die Zuordnung aufheben möchten, können Sie den Wert einfach auf null setzen.

Anforderung:

PATCH [Organization Uri]/api/data/v9.2/contacts(cf9eaaef-f718-ed11-b83e-00224837179f) HTTP/1.1
If-Match: *
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "parentcustomerid_account@odata.bind": null
}

Antwort:

HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/contacts(cf9eaaef-f718-ed11-b83e-00224837179f)

Wenn Sie sich auf diese Weise trennen, müssen Sie die nicht die @odata.bind-Anmerkung einbeziehen. Oder Sie verwenden einfach den Namen der einwertigen Navigationseigenschaft:

Anforderung:

PATCH [Organization Uri]/api/data/v9.2/contacts(cf9eaaef-f718-ed11-b83e-00224837179f) HTTP/1.1
If-Match: *
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "parentcustomerid_account": null
}

Antwort:

HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/contacts(cf9eaaef-f718-ed11-b83e-00224837179f)

Weitere Informationen: Basisches Update

Weitere Methoden

Es gibt andere Möglichkeiten, die oben beschriebenen Ergebnisse mit einwertigen Navigationseigenschaften zu erzielen.

Sie können die folgende PUT-Anfrage verwenden, um den Wert der parentcustomerid_account einzelwertigen Navigationseigenschaft festzulegen:

Anforderung:

PUT [Organization Uri]/api/data/v9.2/contacts(cf9eaaef-f718-ed11-b83e-00224837179f)/parentcustomerid_account/$ref HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "@odata.id": "[Organization URI]/api/data/v9.2/accounts(ce9eaaef-f718-ed11-b83e-00224837179f)"
}

Antwort:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Hinweis

Hinweis: Sie müssen eine absolute URL verwenden, wenn Sie den Wert für @odata.id festlegen.

Um den Verweis zu entfernen, können Sie auch diese DELETE-Anfrage verwenden:

Anforderung:

DELETE [Organization Uri]/api/data/v9.2/contacts(cf9eaaef-f718-ed11-b83e-00224837179f)/parentcustomerid_account/$ref HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

Antwort:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Sammlungswertige Navigationseigenschaften verwenden

Mit OData haben beide Seiten einer n:n-Beziehung sammlungswertige Navigationseigenschaften. Für Eins-zu-Viele und Viele-zu-Eins Beziehungen hat die Tabelle auf der „Eins“-Seite eine Navigationseigenschaft mit Sammlungswert. Es gibt keinen Unterschied, wie Sie mit diesen Typen von Beziehungen arbeiten, während Sie Navigationseigenschaften mit Sammlungswert verwenden. In diesem Abschnitt wird beschrieben, wie Sie mit sammlungswertigen Navigationseigenschaften mit beliebigen Beziehungstypen arbeiten.

Einen Datensatz zur Sammlung hinzufügen

Das folgende Beispiel zeigt, wie Sie einen contact-Datensatz auf die account contact_customer_accounts-Sammlung hinzufügen, die Teil einer 1:n-Beziehung ist.

Anforderung:

POST [Organization Uri]/api/data/v9.2/accounts(ce9eaaef-f718-ed11-b83e-00224837179f)/contact_customer_accounts/$ref HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "@odata.id": "[Organization URI]/api/data/v9.2/contacts(cf9eaaef-f718-ed11-b83e-00224837179f)"
}

Antwort:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Das folgende Beispiel zeigt, wie Sie einen role-Datensatz auf die systemuser systemuserroles_association-Sammlung hinzufügen, die Teil einer n:n-Beziehung ist.

Anforderung:

POST [Organization Uri]/api/data/v9.2/systemusers(34dcbaf5-f718-ed11-b83e-00224837179f)/systemuserroles_association/$ref HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "@odata.id": "[Organization URI]/api/data/v9.2/roles(886b280c-6396-4d56-a0a3-2c1b0a50ceb0)"
}

Antwort:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Einen Datensatz aus einer Sammlung entfernen

Das folgende Beispiel zeigt, wie Sie einen contact-Datensatz auf der account contact_customer_accounts-Sammlung entfernen, wo der Kontakt contactid-Wert cf9eaaef-f718-ed11-b83e-00224837179f ist.

Anforderung:

DELETE [Organization Uri]/api/data/v9.2/accounts(ce9eaaef-f718-ed11-b83e-00224837179f)/contact_customer_accounts(cf9eaaef-f718-ed11-b83e-00224837179f)/$ref HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

Antwort:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Folgendes funktioniert auch:

Anforderung:

DELETE [Organization Uri]/api/data/v9.2/accounts(ce9eaaef-f718-ed11-b83e-00224837179f)/contact_customer_accounts/$ref?$id=[Organization URI]/api/data/v9.2/contacts(cf9eaaef-f718-ed11-b83e-00224837179f) HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

Antwort:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Siehe auch

Beispiel grundlegender Web-API-Operationen (C#)
Beispiele grundlegender Web API-Operationen (clientseitiges JavaScript)
Vorgänge mithilfe der Web-API ausführen
HTTP-Anforderungen verfassen und Fehler beheben
Datenabfrage mit Web-API
Erstellen einer Tabellenzeile über die Web-API
Abrufen einer Tabellenzeile über die Web-API
Aktualisieren und Löschen von Tabellenzeilen über die Web-API
Nutzen von Web-API-Funktionen
Web-API-Aktionen verwenden
Ausführen von Batchbetrieben mithilfe der Web-API
Annehmen eines anderen Benutzerkontos mit Web API
Bedingte Vorgänge mithilfe der Web-API ausführen

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