WCF OData正在修补实体集



是否可以基于批处理请求中的筛选器查询更新多个实体?

作为我试图实现的一个例子,比如说我想在一个OData端点的请求中更新从foo到bar的所有产品类别,有这样的方法吗:

--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--

恐怕答案是否定的。协议中不支持。即使你从问题中删除了过滤,试图更新实体集中的所有实体,使它们具有相同的新值,答案仍然是否定的。

你也许可以自己做。比如

Get /service.svc/MyEntitySet

对于您返回的每个实体,发送一个PATCH单独更新它

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

最新更新