Нотатка
Доступ до цієї сторінки потребує авторизації. Можна спробувати ввійти або змінити каталоги.
Доступ до цієї сторінки потребує авторизації. Можна спробувати змінити каталоги.
Можна пов'язувати окремі записи в рядках таблиці з іншими записами за допомогою зв'язків, які існують між визначеннями таблиць. В OData відносини виражаються у вигляді навігаційних властивостей.
Які властивості навігації існують, можна знайти в документі служби $metadata. Дивіться Властивості навігації веб-API. Для існуючих таблиць Dataverse див. посилання на Web API EntityType
, для кожного типу сутності див. перелічені навігаційні властивості з однозначним та колекційним значенням.
У наведеній нижче таблиці описано три типи зв'язків між таблицями у 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)
Як описано в рядках таблиці Associate при створенні, ви також можете асоціювати нові записи з існуючими записами аналогічним способом.
Відключення шляхом використання однозначної навігаційної властивості
Щоб відокремити, встановіть значення на 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
У наведеному нижче прикладі показано, як додати запис ролі до збірки системних користувачівsystemuserroles_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 на стороні клієнта)
Виконання операцій за допомогою Web API
Створення HTTP-запитів і обробка помилок
Запит даних за допомогою веб-API
Створення рядка таблиці за допомогою Web API
Отримання рядка таблиці за допомогою веб-API
Оновлення та видалення рядків таблиці за допомогою веб-API
Використовуйте функції веб-API
Використання дій веб-API
Виконання пакетних операцій за допомогою веб-API
Видавати себе за іншого користувача за допомогою веб-API
Виконання умовних операцій за допомогою веб-API