Как обновить ссылку на связанный объект CRM с ODataLib?

Я использую ODataLib ( http://odata.github.io/) и клиентскую библиотеку для доступа к API OData от Microsoft CRM (v9.0).

Я пытаюсь обновить значение свойства навигации объекта (GUID), но обновление, похоже, ничего не делает (никаких вызовов не производится).

Если я пытаюсь обновить значение свойства навигации напрямую, я получаю сообщение об ошибке, в котором говорится, что "CRM не поддерживает прямое обновление свойств ссылок на объекты, вместо этого используйте свойства навигации".

Сущность в основном является средней сущностью в отношениях N:N.

В основном то, что я делаю в коде (полупсевдокод):

Account a = _dao.GetAccount();

// This gets the dataservicecollection that tracks the changes
DataServiceCollection<MyRelationEntity> rel = _dao.GetMyRelationEntity();

rel.AccountId = a;

_dao.SaveChanges(SaveChangesOptions.PostOnlySetProperties);

Должен ли я использовать AddLink, UpdateLink или что-то подобное? Кажется, они тоже ничего не делают.

Я извиняюсь, если терминология не верна; Я совсем новичок в CRM.

1 ответ

Я ничего не знаю о ODataLib, но с точки зрения Dynamics 365 вам нужна операция Associate.

Вот пример псевдокода вызова веб-API D365 для привязки возможности к учетной записи. Обратите внимание, что URI содержит accountId и имя отношения, а тело содержит URI возможности.

POST [Organization URI]/api/data/v9.0/accounts(00000000-0000-0000-0000-000000000002)/opportunity_customer_accounts/$ref HTTP/1.1   
Content-Type: application/json   
Accept: application/json   
OData-MaxVersion: 4.0   
OData-Version: 4.0  

{  
"@odata.id":"[Organization URI]/api/data/v9.0/opportunities(00000000-0000-0000-0000-000000000001)"  
}  

Эта статья имеет больше информации.

И, работая с D365 Web API, я считаю RESTBuilder Джейсона Латтимера незаменимым инструментом.

Другие вопросы по тегам