在saveChanges BreezeJs之后更改管理器中的跟踪

时间:2014-08-13 07:25:56

标签: angularjs nhibernate breeze

我在客户端上使用Breeze和Angular,在服务器上使用NHibernate。出于业务逻辑的原因,我需要知道某个对象在保存后是否有变化。出于这个原因我正在调用

manager.hasChanges(['ArrayOfTypes']);

如果从db加载对象,它按预期工作(返回true / false), 但是通过

保存对象后
manager.saveChanges(['ArrayOfTypes']);

我收到此错误:

  

TypeError:无法读取未定义的属性'hasChanges'

错误在breeze.js文件中抛出:

proto._hasChangesCore = function(entityTypes) {
    entityTypes = checkEntityTypes(this, entityTypes);
    var entityGroups = getEntityGroups(this, entityTypes);

    return entityGroups.some(function (eg) {

            return eg.hasChanges();          
    });
};

我期待32个entityGroups返回,并且数组中确实有32个元素,但其中25个是未定义的。现在我已经做了一个感觉不对的临时修复:

    proto._hasChangesCore = function(entityTypes) {
    entityTypes = checkEntityTypes(this, entityTypes);
    var entityGroups = getEntityGroups(this, entityTypes);

    return entityGroups.some(function (eg) {

        if (eg !== undefined) {
            return eg.hasChanges();
        }
        else {
            return false;
        }
    });
};

有没有办法以其他方式处理问题?

由于

1 个答案:

答案 0 :(得分:0)

当实体管理器中的EntityGroup未表示一个或多个实体类型时,会发生这种情况。但是你能够传递任何类型的名称而不会让它爆炸。

这是Breeze中的一个错误,finally fixed。修复将在下一个版本中。