当我用MergeStrategy.OverwriteChanges重新查询我唯一的脏实体时,管理器说hasChanges为true,即使entityState没有改变。这是因为entityChanged& hasChangesChanged永远不会发布。
查看mergeEntity中的源代码(第14258行),它的目标代码将永远无法正常工作,因为它在更新后测试实体状态&它测试isUnchanged函数的存在而不是它的返回值。
我认为它应该像
if (mergeStrategy === MergeStrategy.OverwriteChanges
|| targetEntityState.isUnchanged()) {
var isTargetEntityStateUnchanged = targetEntityState.isUnchanged();
...
// this is needed to handle an overwrite of a modified entity with an unchanged entity
// which might in turn cause _hasChanges to change.
if (!isSaving && !isTargetEntityStateUnchanged) {
em._notifyStateChange(targetEntity, false);
}
答案 0 :(得分:0)
截至Breeze 1.4.9(或更高版本),现已上市,此问题已修复。并感谢您找到它。