Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Отдельные записи в строках таблицы можно связать с другими записями с помощью связей, существующих между определениями таблиц. В OData связи выражаются как свойства навигации.
Вы можете узнать, какие свойства навигации существуют в документе службы $metadata. См. статью "Свойства навигации веб-API". Сведения о существующих таблицах Dataverse см. в справочнике по EntityType веб-API, где для каждого типа сущности указаны однозначные и коллекционные свойства навигации.
В следующей таблице описаны три типа связей между таблицами в Dataverse.
| Тип | Description | Example |
|---|---|---|
| Один ко многим | Одна запись может иметь множество записей, связанных с ней. | Запись учетной записи может содержать множество записей контактов в 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
{
"[email protected]": "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
{
"[email protected]": 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
Замечание
Примечание. При задании значения @odata.idнеобходимо использовать абсолютный URL-адрес.
Чтобы удалить ссылку, можно также использовать этот 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