2014-01-15 24 views

回答

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示例中查看它。

+0

對不起,我使用[saveQueuing](http://www.breezejs.com/documentation/concurrent-saves#savequeuing)插件,並指出[這裏](http://stackoverflow.com/ a/16043515/995526)saveOptions和savequeuing是相互排斥的方法。這似乎是我需要添加rowversion到我的模型類爲了使用這個插件。 –

+0

啊!對不起,我誤解了你的問題。我不知道排隊是否可以解決這個問題,我已經更新了我的答案 –