11

我正在使用带有简单 OData 的 Ms Dynamic Web Api。我需要为链接实体添加新记录。

我正在使用以下代码片段并参考 https://github.com/object/Simple.OData.Client/wiki/Adding-entries-with-links上的文档

       var newContactData = await _oDataClient
            .For<Contacts>()
               .Set(new
               {
                   firstname = contactData.ContatDetails.firstname,
                   lastname = contactData.ContatDetails.lastname,
                   emailaddress1 = contactData.ContatDetails.emailaddress1
               })
               .InsertEntryAsync(true);

        var newContactLink = await  _oDataClient.For<New_project_contactses>()
                .Set(new
                {
                    _new_contact_project_name_new_value = contactData.ContatDetailsLink._new_contact_project_name_new_value,
                    new_project_contactsid = new Guid("0eb46b24-21a2-e611-80eb-c4346bc5b2d4"),
                    new_contact_type = contactData.ContatDetailsLink.new_contact_type,

                })
                .InsertEntryAsync(resultRequired: true);

我得到了例外

CRM 不支持直接更新实体引用属性,请改用导航属性S

4

2 回答 2

17

好吧,这是可能的,但是您需要使用特殊的“@odata.bind”语法来更新您的单导航属性。

例如,要更新帐户以使其引用现有的 primarycontactid,您可以对/api/data/v8.2/accounts具有以下正文的端点使用 PATCH 操作:

{
   "name":"Sample Account",
   "primarycontactid@odata.bind":"/contacts(00000000-0000-0000-0000-000000000001)"
}

请参阅https://msdn.microsoft.com/en-us/library/gg328090.aspx#Anchor_3(在创建实体方面进行了讨论,但它也适用于更新)。

于 2017-02-03T14:01:37.040 回答
5

我发现了 Dynamc CRM 的问题,您无法直接更新参考实体字段。您可以识别以“_”开头的参考实体属性。

于 2016-11-06T23:43:21.590 回答