我正在使用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
替换为类型 - Delta
,Delta<IEdmEntityObject>
和dynamic
但我得到以下异常
No MediaTypeFormatter is available to read an object of type 'Object' from content with media type 'application/json'
答案 0 :(得分:1)
gebov
更新,例如PATCH / PUT用于单个实体。因此,您的操作应该有一个关键,以确定应更新哪个实体。
因此,请将您的操作修改为:
public HttpResponseMessage Patch(int key, IEdmEntityObject entity)
{
...
}
它应该工作。查看我的test project。感谢。