我在客户端上使用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;
}
});
};
有没有办法以其他方式处理问题?
由于
答案 0 :(得分:0)
当实体管理器中的EntityGroup
未表示一个或多个实体类型时,会发生这种情况。但是你应能够传递任何类型的名称而不会让它爆炸。
这是Breeze中的一个错误,finally fixed。修复将在下一个版本中。