Breeze 不允许并发保存:错误

Breeze 不允许并发保存:错误,breeze,savechanges,Breeze,Savechanges,我有一个函数,其中有8个for循环(在代码示例中,我只显示了2个循环)。我正在获取该循环中的一个实体,并更改其一个属性。理想情况下,我希望将所有实体保存在一起,而不是一个一个地保存,因为我目前正在执行此操作,这会导致并发保存错误,但我不确定如何将所有这些修改过的实体保存在一起(考虑到fetchEntity方法返回多个承诺,我应该在哪里编写单个保存方法调用)Breeze确实支持并发保存,但您需要通过SaveOptions类显式打开此功能: 也就是说,重构/重写代码可能更有意义,这样您就可以使用多个

我有一个函数,其中有8个for循环(在代码示例中,我只显示了2个循环)。我正在获取该循环中的一个实体,并更改其一个属性。理想情况下,我希望将所有实体保存在一起,而不是一个一个地保存,因为我目前正在执行此操作,这会导致并发保存错误,但我不确定如何将所有这些修改过的实体保存在一起(考虑到fetchEntity方法返回多个承诺,我应该在哪里编写单个保存方法调用)

Breeze确实支持并发保存,但您需要通过SaveOptions类显式打开此功能:


也就是说,重构/重写代码可能更有意义,这样您就可以使用多个实体执行单个保存。查看Q.all方法()以了解如何编写一个保存承诺,该承诺在执行所有获取之后执行

是的,我确实读过关于breeze中并发保存的内容,我现在不想启用它。我将首先尝试重写我的代码。如果我一次调用save仍无法保存,我将启用saveOptions。请标记为已应答(如果您认为是:);否则我会继续查。。。
  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();
                });

            }

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