使用manager.enableSaveQueuing(true)“不允许并发保存”

时间:2014-01-15 09:45:12

标签: angularjs breeze

为什么breeze继续投掷'启用manager.enableSaveQueuing(true)选项时不允许并发保存

1 个答案:

答案 0 :(得分:1)

只是因为您尝试同时发出多次保存。 Breeze的默认保存选项是排队数据以进行保存。 在您的情况下,您可以覆盖允许并发保存的选项,如下所示:

var so =  new breeze.SaveOptions({allowConcurrentSaves: true})
            return manager.saveChanges(null,so) 
                .then(saveSucceeded) // 
                .fail(saveFailed);

修改

因为你正在使用" saveQueuing"插件,忽略我的第一个答案,因为它只适用于并发保存。

我不知道你的代码是如何工作的,但是在保存队列的情况下你可能需要考虑一些事项:

  1. 您只能在代码内部发出manager.saveChanges()
  2. 在服务器端,为了新BeforeSaveEntity()方法中的互斥锁定语句,覆盖savechanges()方法,您的代码可能如下所示:

    public void SaveChanges(SaveWorkState saveWorkState)
    {
     lock (__lock) // this will block any try to issue concurrent saves on the same row
    {
    // Saving Operations goes here
    }
    }
    
  3. 您可能希望在NoDB示例中查看它。