【发布时间】:2014-02-07 09:00:34
【问题描述】:
为什么在启用 manager.enableSaveQueuing(true) 选项的情况下,微风总是抛出“不允许并发保存”
【问题讨论】:
为什么在启用 manager.enableSaveQueuing(true) 选项的情况下,微风总是抛出“不允许并发保存”
【问题讨论】:
仅仅是因为您试图同时发出多个存档。 Breeze 的默认保存选项是排队保存数据。 在您的情况下,您可以覆盖允许并发保存的选项,如下所示:
var so = new breeze.SaveOptions({allowConcurrentSaves: true})
return manager.saveChanges(null,so)
.then(saveSucceeded) //
.fail(saveFailed);
编辑
由于您使用的是“saveQueuing”插件,请忽略我的第一个答案,因为它仅适用于并发保存。
我不知道您的代码是如何工作的,但您可能会在保存队列的情况下考虑一些因素:
manager.saveChanges()。在服务器端,为新的savechanges() 方法中的互斥锁语句重写BeforeSaveEntity() 方法,您的代码可能如下所示:
public void SaveChanges(SaveWorkState saveWorkState)
{
lock (__lock) // this will block any try to issue concurrent saves on the same row
{
// Saving Operations goes here
}
}
您可能想在 NoDB 示例中查看它。
【讨论】: