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



我正在使用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)
{
   ...
}

应该可以。请看我的测试项目。谢谢。

最新更新