【问题标题】:Created(entity) throw exception with composite keyCreated(entity) 使用复合键抛出异常
【发布时间】:2015-10-22 04:36:41
【问题描述】:
我有一个使用复合键的实体 (MyEntity)。
实体可以正常发布和插入,但是当调用Created() 时,它会抛出带有消息的InvalidOperationException。
实体集“MyEntity”的编辑链接构建器返回 null。一个
位置标题需要编辑链接。
public IHttpActionResult Post(MyEntity entity)
{
entity = Repository.Insert(entity);
Repository.Save();
return Created(entity); // fails
}
【问题讨论】:
标签:
asp.net-web-api
odata
asp.net-web-api-odata
odata-v4
【解决方案1】:
- 如果您从约定模型构建器构建 Edm 模型,它应该可以工作。
private static IEdmModel GetEdmModel()
{
var builder = new ODataConventionModelBuilder();
...
return builder.GetEdmModel();
}
- 如果您从非常规模型构建器构建 Edm 模型,您应该设置 Id 链接构建器然后它才能工作:
private static IEdmModel GetEdmModel2()
{
var builder = new ODataModelBuilder();
...
builder.EntitySet<MyEntity>("MyEntitys").HasEditLink(p => new Uri("http://anylink/"), false);
return builder.GetEdmModel();
}