【问题标题】:WCF OData patching an entity setWCF OData 修补实体集
【发布时间】:2013-12-11 09:44:39
【问题描述】:

是否可以根据批量请求中的过滤查询更新多个实体?

作为我要实现的目标的一个示例,假设我想在一个对 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--

【问题讨论】:

    标签: wcf odata wcf-data-services


    【解决方案1】:

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

    您可能自己也可以这样做。喜欢,

    Get /service.svc/MyEntitySet
    

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

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

    【讨论】:

      猜你喜欢
      • 2017-06-12
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多