Jaydata、Web Api 和乐观并发

Jaydata, Web Api and optimistic concurrency

我已经成功地实现了 JayData 站点的乐观并发示例 http://jaydata.org/blog/optimistic-concurrency-support-in-jaydata-1.2 后面有一个 WCF DataService,就像在示例中一样。

现在,负责人决定我们需要将项目中的 OData 后端更改为 Web Api。

但我无法让示例与 Web Api 一起使用。

我的第一次尝试:把后端关掉,所有的Javascript都是一样的。 这导致令牌未定义。

使用 Jaydata SvcUtil 创建实体描述时,它将如下所示:

'token': {
        type: 'Edm.Binary'
    },

令牌将显示为 [UInt8Array],但是当执行 saveItems() 命令时,两个项目都将被保存,因为它不会在 If-Match header 中发送令牌。 一旦我将 concurrencyMode: $data.ConcurrencyMode.Fixed 添加到实体描述中,令牌将再次未定义。

我是否必须在服务器端为我的 OData 控制器实施某些操作才能使其正常工作? 或者我是否必须向我的实体添加其他内容,也许对于 Web Api,将令牌作为 byte[] 是不够的[时间戳]属性?

免责声明:我为 JayData 项目工作

恐怕只有批处理负载格式才支持乐观并发。在编写 WebAPI OData 的批处理有效负载格式的使用时,在 Olingo 和 JayData 1.3.x 和 1.4.x 中仍然无法正常工作-但是我们计划在中提供此支持3 月 - 但仅适用于 OData v4。

虽然 WebAPI OData 非常棒,但请务必检查您的要求并仔细检查它们在 WebAPI OData 中的可用性 - 因为我们 运行 在迁移大型项目时遇到了一些困难...