【发布时间】:2015-10-27 07:05:12
【问题描述】:
我正在使用 WebApi 实现 OData v4 服务,并且我还使用来自 https://damienbod.wordpress.com/2014/08/14/web-api-odata-v4-batching-part-10/ 的代码实现了对 OData 变更集的支持
基本上这是可行的,但现在我想知道从一个变更集中的多个请求修改同一实体时的正确行为。 考虑这个例子:
内容 ID:1 - POST ~/Entity
-> 创建新实体。
内容 ID:2 - PUT ~/Entity($Entity-ContentID1)/Company/$ref?$id=URI
-> 使用 ContentID 创建从新实体到现有公司的链接。
内容 ID:3 - POST ~/Entity($Entity-ContentID1)/ChangeState
-> 执行操作以更改新创建的实体的状态。
只有在连接了公司的情况下才能执行 ChangetState。如果客户端按此顺序发送所有请求,并且我按顺序执行请求,则一切正常。
但根据OData Spec,变更集中的请求是无序的。
如果客户端在请求 2 之前发送请求 3,预期的结果是什么?在我当前的实现中,这个变更集将失败,但这真的可以吗? 我很难理解变更集的正确语义......
【问题讨论】:
标签: c# asp.net-web-api odata