我正在使用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);
}
我还尝试用Delta
, Delta<IEdmEntityObject>
和dynamic
类型替换IEdmEntityObject
,但我得到以下异常
No MediaTypeFormatter is available to read an object of type 'Object' from content with media type 'application/json'
Update,例如PATCH/PUT是针对单个实体的。因此,您的操作应该有一个键来标识应该更新哪个实体。
因此,将您的操作修改为:
public HttpResponseMessage Patch(int key, IEdmEntityObject entity)
{
...
}
应该可以。请看我的测试项目。谢谢。