Asp.net web api 创建新实体时忽略导航属性的DataServiceContext

Asp.net web api 创建新实体时忽略导航属性的DataServiceContext,asp.net-web-api,odata,dynamics-crm,navigation-properties,Asp.net Web Api,Odata,Dynamics Crm,Navigation Properties,我正在尝试使用ODataDataServiceContext将数据推送到用于Dynamics CRM 2016的oData web api中,但它一直失败,因为它忽略了导航属性。在这个场景中,我试图创建一个用户,该用户具有指向已存在的业务单元的导航属性。我将属性设置为该实体,并尝试将其持久化,但上下文会同时忽略导航属性。代码如下: var user = new Systemuser() { Businessunitid = businessUnit, Domainname = "..

我正在尝试使用ODataDataServiceContext将数据推送到用于Dynamics CRM 2016的oData web api中,但它一直失败,因为它忽略了导航属性。在这个场景中,我试图创建一个用户,该用户具有指向已存在的业务单元的导航属性。我将属性设置为该实体,并尝试将其持久化,但上下文会同时忽略导航属性。代码如下:

var user = new Systemuser()
{
   Businessunitid = businessUnit,
   Domainname = "...",
   Firstname = "...,
   Lastname = "...,
   Fullname = "...",
   Internalemailaddress = "..."
};

_context.AddToSystemusers(user);
_context.SaveChanges();
当它发送时,我在Fiddler中捕获了帖子,并注意到它丢失了:

{
  "@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客户端代码生成器生成了这些实体。

您是否尝试了CrmSvcUtil.exe生成实体?不确定,但我认为它没有正确转换业务单元属性,因为它是Dynamics 365(CRM)中的一个查找类型的列。如果你已经解决了这个问题,请与其他人分享你的发现,这会很有帮助。