是否可以根据批处理请求中的过滤查询更新多个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--
答案 0 :(得分:0)
我担心答案是否定的。协议中有不支持。即使您从问题中删除过滤,尝试更新实体集中的所有实体以使它们具有相同的新值,答案仍然是否定。
你可能自己也可以这样做。像,
Get /service.svc/MyEntitySet
并为您获得的每个实体发送PATCH
至单独更新。
此外,如果要经常进行此类操作,服务作者可以编写特定的服务操作或操作以在服务器端执行此操作。例如,写一个名为"ClearAllNames"
的东西,用户可以调用它,服务器将遍历每个实体并清除其名称字段。