Споделяне чрез


Свързване и разединяване на редове на таблици с помощта на уеб API

Можете да свържете отделни записи в редове на таблица с други записи, като използвате релации, които съществуват между дефинициите на таблицата. В OData релациите се изразяват като навигационни свойства.

Можете да откриете кои свойства на навигацията съществуват в документа за $metadata услуга. Вижте Свойства за навигация в уеб API. За съществуващите таблици на Dataverse, вижте Web API EntityType Reference

, за всеки тип субект, вижте изброените навигационни свойства с едностойностни и колекционни стойности.

Следващата таблица описва трите типа релации между таблици в Dataverse.

Вид Описание Пример
Един към много Един запис може да има много записи, свързани с него. Записът на акаунта може да има много записи на контакт в contact_customer_accountsсвойството за навигация със стойност на колекцията.
Много към едно Много записи могат да бъдат свързани с един запис.

Много към едно е огледален образ на връзката един към много. Има само една връзка.
Няколко записа на контакт могат да бъдат свързани с един запис на акаунт с помощта на parentcustomerid_accountсвойството за навигация с една стойност.
Много към много Много записи могат да бъдат свързани с много записи. Всяка права за достъп (роля) може да включва препратки към дефиницията на системен потребител.
И двете таблици имат systemuserroles_associationсвойство за навигация със стойност на колекция.

Използване на свойства за навигация с една стойност

За съществуващи записи от многото страна на релация "едно към много" или "много към едно" можете да свържете записа, като зададете препратка към URI към другия запис. Най-лесният и често срещан начин да направите това е да добавите @odata.bind анотацията към името на свойството за навигация с една стойност и след това да зададете стойността като URI към другия запис в PATCH заявка.

Свързване със свойство за навигация с една стойност

Например, за да асоциирате контактен запис с акаунт , използвайки parentcustomerid_account едностойностното навигационно свойство:

Молба:

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

Отговор:

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

Както е описано в редовете на Асоциирана таблица при създаване, можете също да асоциирате нови записи със съществуващи записи по същия начин.

Диасоцииране чрез използване на навигационно свойство с една стойност

За да се дисоциирате, задайте стойността на null.

Молба:

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
}

Отговор:

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

Когато се дистанцирате с този метод, не включвайте @odata.bind анотацията. Използвайте името на едностойностното навигационно свойство:

Молба:

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
}

Отговор:

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

Повече информация: Основна актуализация

Други методи

Можете да използвате други методи, за да постигнете същите описани резултати с едностойностни навигационни свойства.

Използвайте следната PUT заявка, за да зададете стойността на parentcustomerid_account едностойностното навигационно свойство:

Молба:

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

Отговор:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Бележка

Трябва да използвате абсолютен URL при задаване на стойността за @odata.id.

За да премахнете препратката, използвайте тази DELETE заявка:

Молба:

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

Отговор:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Използване на свойства за навигация със стойност на колекция

При OData и двете страни на релацията "много към много" имат стойности за колекция навигационни свойства. За връзки едно към много и много към едно таблицата от страната "Едно" има навигационно свойство с стойност на колекцията. Няма разлика в начина, по който работиш с тези видове връзки, когато използваш навигационни свойства с колекция-стойност. Този раздел описва как да се работи с колекция-стойностни навигационни свойства за всякакъв тип връзка.

Добавяне на запис към колекция

Следващият пример показва как да добавите запис на контакт към колекцията от акаунтиcontact_customer_accounts , която е част от релация един към много.

Молба:

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

Отговор:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Следващият пример показва как да добавите запис на роля към колекцията systemusersystemuserroles_association , която е релация много към много.

Молба:

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

Отговор:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Премахване на запис от колекция

Следващият пример показва как да премахнете запис на контакт в колекцията от акаунтиcontact_customer_accounts , където стойността на контакта contactid е 00aa00aa-bb11-cc22-dd33-44ee44ee44ee.

Молба:

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

Отговор:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Следната заявка също работи:

Молба:

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

Отговор:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Вижте също

Пример за основни операции на уеб API (C#)
Пример за основни операции на уеб API (JavaScript от страна на клиента)
Извършване на операции с помощта на уеб API
Съставяне на Http заявки и обработка на грешки
Заявка за данни с помощта на уеб API
Създаване на ред на таблица с помощта на уеб API
Извличане на ред на таблица с помощта на уеб API
Актуализиране и изтриване на редове на таблици с помощта на уеб API
Използване на функции на уеб API
Използване на действия за уеб API
Изпълнение на пакетни операции с помощта на уеб API
Представяне за друг потребител с помощта на уеб API
Извършване на условни операции с помощта на уеб API