我正在尝试使用oData DataServiceContext将数据推送到Dynamics CRM 2016的oData web api,但由于省略了导航属性,因此它仍然失败。在这种情况下,我正在尝试创建一个具有已存在的业务单位的导航属性的用户。我将属性设置为该实体并尝试保留它,但上下文一起忽略导航属性。这是代码:
var user = new Systemuser()
{
Businessunitid = businessUnit,
Domainname = "...",
Firstname = "...,
Lastname = "...,
Fullname = "...",
Internalemailaddress = "..."
};
_context.AddToSystemusers(user);
_context.SaveChanges();
当它发送时,我在Fiddler捕获了POST并注意到它丢失了:
{
"@odata.type": "#Microsoft.Dynamics.CRM.systemuser",
"domainname": "COMPANY\\UserName",
"firstname": "Emilee",
"fullname": "Emilee Scott",
"lastname": "Scott"
}
这失败了,因为它需要Businessunit的导航属性,我不知道为什么。我能够在fiddler中接受请求并修改它以获得导航属性,它的工作原理如下:
{
"@odata.type": "#Microsoft.Dynamics.CRM.systemuser",
"businessunitid@odata.bind": "/businessunits(aa57c55b-3dae-e511-80d3-005056a7260b)",
"domainname": "COMPANY\\UserName",
"firstname": "Emilee",
"fullname": "Emilee Scott",
"lastname": "Scott"
}
有没有人有任何想法?我使用oData v4客户端代码生成器生成了这些实体。