Udostępnij przez


Kojarzenie i usuwanie skojarzenia wierszy tabeli przy użyciu interfejsu API sieci Web

Poszczególne rekordy można skojarzyć w wierszach tabeli z innymi rekordami przy użyciu relacji, które istnieją między definicjami tabeli. W usłudze OData relacje są wyrażane jako właściwości nawigacji.

Możesz dowiedzieć się, które właściwości nawigacji istnieją w dokumencie usługi $metadata. Zobacz Właściwości nawigacji interfejsu API sieci Web. Aby zapoznać się z istniejącymi tabelami usługi Dataverse, zobacz referencję Web API EntityType

, dla każdego typu jednostki, zapoznaj się z wymienionymi właściwościami nawigacyjnymi o wartościach pojedynczych i zbiorczych.

W poniższej tabeli opisano trzy typy relacji między tabelami w usłudze Dataverse.

Typ Description Example
Jeden do wielu Jeden rekord może mieć wiele skojarzonych rekordów. Rekord konta może mieć wiele rekordów kontaktów we contact_customer_accountswłaściwości nawigacji opartej na wartości kolekcji.
Wiele do jednego Wiele rekordów może być skojarzonych z jednym rekordem.

Wiele-do-jednego jest lustrzanym odbiciem relacji jeden-do-wielu. Jest tylko jedna relacja.
Wiele rekordów kontaktów można skojarzyć z pojedynczym rekordem konta przy użyciu parentcustomerid_account wartości.
Wiele do wielu Wiele rekordów może być skojarzonych z wieloma rekordami. Każda rola zabezpieczeń (rola) może zawierać odwołania do definicji użytkownika systemowego.
Obie te tabele mają systemuserroles_associationwłaściwość nawigacji opartą na wartości kolekcji.

Używanie właściwości nawigacji jednowartościowej

W przypadku istniejących rekordów po stronie wielu w relacji jeden-do-wielu lub wiele-do-jednego, można powiązać rekord, ustawiając odniesienie URI do innego rekordu. Najprostszym i najbardziej typowym sposobem wykonania tej czynności jest dołączenie @odata.bind adnotacji do nazwy właściwości nawigacji jednowartościowej i ustawienie wartości jako identyfikatora URI dla innego rekordu w żądaniu PATCH.

Powiązanie z właściwością nawigacyjną o pojedynczej wartości

Aby na przykład skojarzyć rekord kontaktu z rekordem konta przy użyciu właściwości nawigacji o pojedynczej parentcustomerid_account wartości:

Prosić:

PATCH [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee) 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)"
}

Odpowiedź:

HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)

Zgodnie z opisem w artykule Kojarzenie wierszy tabeli podczas tworzenia można również skojarzyć nowe rekordy z istniejącymi rekordami w taki sam sposób.

Usuń skojarzenie przy użyciu jednowartościowej właściwości nawigacyjnej

Aby usunąć skojarzenie, ustaw wartość na null.

Prosić:

PATCH [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee) 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
}

Odpowiedź:

HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)

Po usunięciu skojarzenia przy użyciu tej metody nie dołączaj adnotacji @odata.bind . Użyj nazwy właściwości nawigacji jednowartościowej:

Prosić:

PATCH [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee) HTTP/1.1
If-Match: *
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "parentcustomerid_account": null
}

Odpowiedź:

HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)

Więcej informacji: Aktualizacja podstawowa

Inne metody

Można użyć innych metod, aby osiągnąć te same wyniki, które zostały opisane wcześniej za pomocą właściwości nawigacyjnych o pojedynczej wartości.

Użyj następującego PUT żądania, aby ustawić wartość parentcustomerid_account właściwości nawigacji jednowartościowej:

Prosić:

PUT [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)/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)"
}

Odpowiedź:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Uwaga / Notatka

Podczas ustawiania wartości parametru @odata.idnależy użyć bezwzględnego adresu URL.

Aby usunąć odwołanie, użyj tego DELETE żądania:

Prosić:

DELETE [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)/parentcustomerid_account/$ref HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

Odpowiedź:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Używanie właściwości nawigacyjnych odwołujących się do kolekcji

W OData obie strony relacji wiele-do-wielu mają właściwości nawigacyjne o wartości kolekcji. W przypadku relacji „jeden do wielu” i „wiele do jednego” tabela po stronie „Jeden” ma właściwość nawigacji o wartości kolekcji. Nie ma różnicy w sposobie pracy z żadnym z tych typów relacji podczas korzystania z właściwości nawigacyjnych o wartości kolekcji. W tej sekcji opisano sposób pracy z właściwościami nawigacyjnymi zbiorów dla każdej relacji.

Dodawanie rekordu do kolekcji

W poniższym przykładzie pokazano, jak dodać rekord kontaktu do kolekcji konta contact_customer_accounts, która stanowi część relacji jeden do wielu.

Prosić:

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(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)"
}

Odpowiedź:

HTTP/1.1 204 NoContent
OData-Version: 4.0

W poniższym przykładzie pokazano, jak dodać rekord dotyczący roli do kolekcji systemusersystemuserroles_association, która jest relacją wiele-do-wielu.

Prosić:

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)"
}

Odpowiedź:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Usuwanie rekordu z kolekcji

W poniższym przykładzie pokazano, jak usunąć rekord kontaktu do kolekcji konta contact_customer_accounts, w której wartością kontaktu contactid jest 00aa00aa-bb11-cc22-dd33-44ee44ee44ee.

Prosić:

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

Odpowiedź:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Działa również następujące żądanie:

Prosić:

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(00aa00aa-bb11-cc22-dd33-44ee44ee44ee) HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

Odpowiedź:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Zobacz także

Przykład podstawowych operacji w interfejsie API sieci Web (C#)
Przykład podstawowych operacji internetowego interfejsu API (JavaScript po stronie klienta)
Wykonywanie operacji przy użyciu internetowego interfejsu API
Tworzenie żądań HTTP i obsługa błędów
Wykonywanie zapytań o dane przy użyciu internetowego interfejsu API
Tworzenie wiersza tabeli przy użyciu internetowego interfejsu API
Pobieranie wiersza tabeli przy użyciu internetowego interfejsu API
Aktualizowanie i usuwanie wierszy tabeli przy użyciu internetowego interfejsu API
Korzystanie z funkcji internetowego interfejsu API
Używanie akcji internetowego interfejsu API
Wykonywanie operacji wsadowych przy użyciu interfejsu Web API
Personifikuj innego użytkownika przy użyciu internetowego interfejsu API
Wykonywanie operacji warunkowych przy użyciu internetowego interfejsu API