我已经成功地从JayData站点实现了乐观并发示例http://jaydata.org/blog/optimistic-concurrency-support-in-jaydata-1.2后面有一个WCF DataService,就像示例中一样。
现在,负责人决定我们需要将项目中的OData后端更改为WebApi。
但我无法获得与WebApi一起工作的样本。
我的第一次尝试:只需切换后端,所有的Javascript都是一样的。这导致令牌未定义。
当使用Jaydata SvcUtil创建实体描述时,它看起来像这样:
'token': {
type: 'Edm.Binary'
},
然后,令牌将显示为[UInt8Array],但在执行saveItems()命令时,这两个项都将被保存,因为它不会在If Match标头中发送令牌。一旦我将concurrentyMode:$data.CurrentMode.Fixed添加到实体描述中,令牌将再次未定义。
我的OData控制器是否需要在服务器端实现一些东西才能实现这一点?或者,我必须向我的实体添加其他东西吗?也许对于Web Api来说,将令牌作为带有[Timestamp]属性的byte[]是不够的?
免责声明:我为JayData项目工作
恐怕只有批处理有效负载格式才支持乐观并发。截至本文撰写之时,WebAPI OData的批量有效负载格式在Olingo和JayData 1.3.x和1.4.x中仍然无法使用,但我们计划在3月份提供此支持,但仅适用于OData v4。
虽然WebAPI OData非常出色,但请确保您审查了您的需求,并仔细检查了它们在WebAPI ODData中的可用性,因为我们在迁移大型项目时遇到了一些困难。。。