Breeze 1.4.8错误:Query MergeStrategy.OverwriteChanges从不通知entityChanged或hasChanges

Breeze 1.4.8错误:Query MergeStrategy.OverwriteChanges从不通知entityChanged或hasChanges,breeze,Breeze,当我使用MergeStrategy.OverwriteChanges重新查询我唯一的脏实体时,经理说hasChanges为true,即使entityState未更改。这是因为entityChanged和hasChangesChanged从未发布 查看mergeEntity(第14258行)中的源代码,该代码的预期代码永远不会工作,因为它在更新实体状态后测试实体状态&它测试的是isUnchanged函数的存在性,而不是它的返回值 我想应该是这样的 if (mergeStrategy === Mer

当我使用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);
    }

从现在可用的Breeze 1.4.9(或更高版本)开始,此问题已得到修复。谢谢你找到它

感谢您的反馈,我将在今天晚些时候(或明天)试着看一看。现在只看1.4.9代码,我认为这不会修复它,因为测试的targetEntityState是一个对象引用,并且将始终保持不变。这就是为什么我使用var isTargetEntityStateUnchanged的原因。与此相关的还有许多其他更改,并且我有许多测试用例表明它工作正常。给我一个失败的测试用例(理想情况下就像DocCode测试中的一个),我将进一步研究它。你真的确认你的代码仍然失败了吗?终于有机会检查了。我的错误-你的修复是好的。非常感谢您的修复。