DataServiceContext在创建新实体时忽略导航属性

时间:2016-01-21 20:42:17

标签: asp.net-web-api odata dynamics-crm navigation-properties

我正在尝试使用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客户端代码生成器生成了这些实体。

0 个答案:

没有答案