2014-02-26 40 views
0

當我用MergeStrategy.OverwriteChanges查詢唯一髒實體時,管理員說hasChanges爲true,即使entityState未更改。這是因爲entityChanged & hasChangesChanged從不發佈。Breeze 1.4.8錯誤:查詢MergeStrategy.OverwriteChanges從不通知entityChanged或hasChanges

綜觀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

隨着微風1.4.9(或更高版本)的,可用的,這已得到修復。並感謝您找到它。

+0

現在只看1.4.9的代碼,我不認爲這會解決它,因爲被測試的targetEntityState是一個對象引用,並且始終保持不變。這就是爲什麼我使用我的var isTargetEntityStateUnchanged。 – RockResolve

+0

還有一些與此相關的其他更改,並且我有許多測試用例顯示此工作正常。給我一個失敗的測試用例(理想的DocCode測試),我會進一步研究它。你真的確認你的代碼仍然失敗嗎? –

+0

終於有機會檢查這一點。我的錯誤 - 你的解決辦法很好。非常感謝修復。 – RockResolve