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

Dynamics crm CRM不支持直接更新实体引用属性,请改用导航属性,dynamics-crm,simple.odata,simple.odata.client,dynamics-crm-webapi,Dynamics Crm,Simple.odata,Simple.odata.client,Dynamics Crm Webapi,我正在使用Ms Dynamic Web Api和简单的OData。我需要为链接实体添加新记录 我正在使用下面的代码snip并参考 var newContactData=await\u oDataClient .对于() .设置(新) { firstname=contactData.ContatDetails.firstname, lastname=contactData.ContatDetails.lastname, emailaddress1=contactData.ContatDetail

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

我正在使用下面的代码snip并参考

var newContactData=await\u oDataClient
.对于()
.设置(新)
{
firstname=contactData.ContatDetails.firstname,
lastname=contactData.ContatDetails.lastname,
emailaddress1=contactData.ContatDetails.emailaddress1
})
.InsertEntryAsync(真);
var newContactLink=await_oDataClient.For()
.设置(新)
{
_新建联系人项目名称新建值=contactData.ContatDetailsLink.\u新建联系人项目名称新建值,
新项目联系人SID=新Guid(“0eb46b24-21a2-e611-80eb-c4346bc5b2d4”),
新建联系人类型=contactData.ContatDetailsLink.新建联系人类型,
})
.InsertEntryAsync(结果要求:true);
我有个例外

CRM不支持直接更新实体引用属性,请使用 导航属性代替


我发现Dynamc CRM存在一个问题,您无法直接更新引用实体字段。您可以标识以“\”开头的引用实体属性

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

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

{
   "name":"Sample Account",
   "primarycontactid@odata.bind":"/contacts(00000000-0000-0000-0000-000000000001)"
}
请参阅(在创建实体方面进行了讨论,但它也适用于更新)

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