WCF OData修补实体集

时间:2013-12-06 14:33:41

标签: wcf odata wcf-data-services

是否可以根据批处理请求中的过滤查询更新多个entites?

作为我想要实现的一个例子,比如我想在一个请求中将所有产品类别从foo更新为bar到OData端点,是否有类似的东西可以工作:

--batch_36522ad7-fc75-4b56-8c71-56071383e77b
Content-Type: multipart/mixed; boundary=changeset_fa7b-4aa9-a01f

GET /api/products?$filter=category eq 'foo' HTTP/1.1
Accept:application/json
Content-ID: 1

--changeset_fa7b-4aa9-a01f
Content-Type: application/http
Content-Transfer-Encoding: binary

PATCH $1 HTTP/1.1
Accept: application/json
Content-Type: application/json;odata=verbose

{"category":"bar"}

--changeset_fa7b-4aa9-a01f--

--batch_36522ad7-fc75-4b56-8c71-56071383e77b--

1 个答案:

答案 0 :(得分:0)

我担心答案是否定的。协议中有不支持。即使您从问题中删除过滤,尝试更新实体集中的所有实体以使它们具有相同的新值,答案仍然是否定。

你可能自己也可以这样做。像,

Get /service.svc/MyEntitySet

并为您获得的每个实体发送PATCH单独更新

此外,如果要经常进行此类操作,服务作者可以编写特定的服务操作或操作以在服务器端执行此操作。例如,写一个名为"ClearAllNames"的东西,用户可以调用它,服务器将遍历每个实体并清除其名称字段。