2014-01-13 53 views
2
vm.alterExistingSortOrder = function() { 

     $.each(vm.M1010DxCodeSorterListBox2(), function (index1, value1) { 


      if (vm.M1010DxCodeSorterListBox2()[index1].IsNewDxCode == false) 
      { 
       return datacontext.fetchEntity("EpisodeDxM00Rel", vm.M1010DxCodeSorterListBox2()[index1].Id).then(function (result) { 
        var episodeDxM00RelEntity = result.entity; 
        episodeDxM00RelEntity.SortOrder(index1); 
        vm.save(); 
       }); 

      } 

     }); 


     $.each(vm.M1016DxCodeSorterListBox2(), function (index2, value2) { 


      if (vm.M1016DxCodeSorterListBox2()[index2].IsNewDxCode == false) 
      { 
       return datacontext.fetchEntity("EpisodeDxM00Rel", vm.M1016DxCodeSorterListBox2()[index2].Id).then(function (result) { 
        var episodeDxM00RelEntity = result.entity; 
        episodeDxM00RelEntity.SortOrder(index2); 
        vm.save(); 
       }); 

      } 

     }); 
}; 

我有一個函數,我有8循環(代碼示例中,我只是顯示2循環)。我正在獲取該循環中的一個實體,並更改其中的一個屬性。理想情況下,我想將所有的實體保存在一起,而不是一個接一個地保存,而這正是我現在正在做的,這給我提供了併發保存錯誤,但我不知道如何將所有這些修改過的實體保存在一起(我應該在哪裏寫入一次保存方法調用考慮有多個承諾由fetchEntity方法返回)併發保存是不允許的:微風錯誤

回答

2

微風不支持併發的節省,但你需要通過SaveOptions明確地把這種能力上類:http://www.breezejs.com/sites/all/apidocs/classes/SaveOptions.html

myEntityManager.saveOptions = new SaveOptions({ allowConcurrentSaves: true }); 
myEntityManager.saveChanges().then(...); 

也就是說,重構/重寫代碼可能更有意義,因此您可以使用mul執行一次保存實體實體。查看Q.all方法(https://github.com/kriskowal/q)以瞭解如何編寫在執行完所有提取操作後執行的保存許諾。

+0

是的,我沒有讀過關於現在不想啓用的微風併發保存。我將首先嚐試重寫我的代碼。如果我仍然無法使用保存一次保存,我將啓用saveOptions。 – user2585299

+0

請標記爲已回答(如果您認爲它是:));否則我會繼續檢查... –