【问题标题】:'Concurrent saves are not allowed' with manager.enableSaveQueuing(true)“不允许同时保存”与 manager.enableSaveQueuing(true)
【发布时间】:2014-02-07 09:00:34
【问题描述】:

为什么在启用 manager.enableSaveQueuing(true) 选项的情况下,微风总是抛出“不允许并发保存”

【问题讨论】:

    标签: angularjs breeze


    【解决方案1】:

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

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

    编辑

    由于您使用的是“saveQueuing”插件,请忽略我的第一个答案,因为它仅适用于并发保存。

    我不知道您的代码是如何工作的,但您可能会在保存队列的情况下考虑一些因素:

    1. 您只能在代码中发出一次manager.saveChanges()
    2. 在服务器端,为新的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 示例中查看它。

    【讨论】:

    • 抱歉,回复晚了,我使用 [saveQueuing ](breezejs.com/documentation/concurrent-saves#savequeuing) 插件,正如 here 指出的那样,saveOptions 和 savequeuing 是互斥的方法。似乎我需要在我的模型类中添加 rowversion 才能使用这个插件。
    • 啊!对不起,我误解了你的问题。我不确定rowversion是否可以解决这个问题,无论如何我已经更新了我的答案
    猜你喜欢
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多