Asp.net web api OData V4 AddObject SetLink OData.bind不传输相关实体

Asp.net web api OData V4 AddObject SetLink OData.bind不传输相关实体,asp.net-web-api,odata,Asp.net Web Api,Odata,我已经创建了一个ODataV4服务,在ASP.NET主页上的文章中有描述。 我基本上有一张桌子,可以安排客人参加活动。我需要这个多对多关系的附加信息,所以我创建了一个EventGuest表 通过OData插入事件和插入客人很好。它只是不想工作,只要我想插入相关的实体 这是我的控制器代码: public async Task<IHttpActionResult> Post(EventGuest eventGuest) { if (!ModelState.IsValid)

我已经创建了一个ODataV4服务,在ASP.NET主页上的文章中有描述。 我基本上有一张桌子,可以安排客人参加活动。我需要这个多对多关系的附加信息,所以我创建了一个EventGuest表

通过OData插入事件和插入客人很好。它只是不想工作,只要我想插入相关的实体

这是我的控制器代码:

public async Task<IHttpActionResult> Post(EventGuest eventGuest)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    _db.EventGuest.AddOrUpdate(eventGuest);
    await _db.SaveChangesAsync();
    return Created(eventGuest);
}
发送到服务器的请求对我来说并不太糟糕:

{"@odata.type":"#Entities.EventGuest","CreationTimestamp":"0001-01-01T00:00:00Z","Guid":"adf500e3-e3a1-4841-883e-2322ed863321","ID":0,"Event@odata.bind":"http://localhost/odata/Event(1)","Guest@odata.bind":"http://localhost/odata/Guest(1)"}

因此,服务器尝试使用
@odata.bind
,但不幸的是,在控制器的POST方法中,引用的实体“Guest”和“Event”为空

您是否在MSDN文档中尝试过以下示例?我注意到它总是使用
AddLink
而不是
SetLink
,甚至在
SetLink
文档中也是如此


MSN文章在这里:

你找到解决这个问题的方法了吗?不太可能。我更改了我的模型,因此它将公开外键的ID属性。在我的请求中,我设置了ID,并在服务器上从数据库中取出ID为的对象。然后我可以使用EF方法来执行CRUD。
{"@odata.type":"#Entities.EventGuest","CreationTimestamp":"0001-01-01T00:00:00Z","Guid":"adf500e3-e3a1-4841-883e-2322ed863321","ID":0,"Event@odata.bind":"http://localhost/odata/Event(1)","Guest@odata.bind":"http://localhost/odata/Guest(1)"}