已创建(实体)使用复合键抛出异常

Created(entity) throw exception with composite key

我有一个使用复合键的实体 (MyEntity)。

实体发布和插入都很好,但是当调用 Created() 时,它会抛出 InvalidOperationException 消息。

The edit link builder for the entity set 'MyEntity' returned null. An edit link is required for the location header.

public IHttpActionResult Post(MyEntity entity)
{
    entity = Repository.Insert(entity);
    Repository.Save();

    return Created(entity); // fails
}
  1. 如果您从约定模型构建器构建 Edm 模型,它应该可以工作。

private static IEdmModel GetEdmModel()
{
      var builder = new ODataConventionModelBuilder();
      ...
      return builder.GetEdmModel();
}

  1. 如果您从非常规模型构建器构建 Edm 模型,您应该设置 Id link 构建器然后它才能工作:

private static IEdmModel GetEdmModel2()
{
    var builder = new ODataModelBuilder();
    ...
    builder.EntitySet<MyEntity>("MyEntitys").HasEditLink(p => new Uri("http://anylink/"), false);

    return builder.GetEdmModel();
}