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

Typless Entity Patch operation in 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);
}

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

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

格博夫

更新,例如 PATCH/PUT 用于单个实体。因此,您的操作应该有一个键来标识应该更新哪个实体。

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

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

应该可以。看我的test project。谢谢