ODATA v4中的无类型实体补丁操作

时间:2015-07-23 08:55:20

标签: dynamic entity odata asp.net-web-api asp.net-web-api2

我正在使用webapi支持odata v4中无类型实体的补丁操作。

到目前为止,我唯一能够完成工作的是Put操作,但它需要整个对象存在。

public HttpResponseMessage Put(IEdmEntityObject entity)
{
     return Request.CreateResponse(System.Net.HttpStatusCode.NoContent);
}

每当我将Put动词更改为Patch时,entity对象为空。

public HttpResponseMessage Patch(IEdmEntityObject entity)
{
     return Request.CreateResponse(System.Net.HttpStatusCode.NoContent);
}

我还尝试将IEdmEntityObject替换为类型 - DeltaDelta<IEdmEntityObject>dynamic但我得到以下异常

No MediaTypeFormatter is available to read an object of type 'Object' from content with media type 'application/json'

1 个答案:

答案 0 :(得分:1)

gebov

更新,例如P​​ATCH / PUT用于单个实体。因此,您的操作应该有一个关键,以确定应更新哪个实体。

因此,请将您的操作修改为:

public HttpResponseMessage Patch(int key, IEdmEntityObject entity)
{
   ...
}

它应该工作。查看我的test project。感谢。