,我有以下數據模型:更新許多到許多協會GraphDiff
我的商業邏輯與分離的實體的作品,所以我使用GraphDiff進行更新。我在更新PerfModes/CalcPoints關聯時遇到問題。概念上,Block擁有CalcPoints和PerfModes,但CalcPoints可以與任意數量的PerfModes關聯。
我正在嘗試在塊級別執行更新。我提出的代碼不會拋出任何錯誤(而其他嘗試),但它也不會更新PerfModes/CalcPoints關聯。
container.UpdateGraph(block, map => map
.OwnedCollection(b => b.HistPoints)
.OwnedCollection(b => b.CalcPoints)
.OwnedCollection(b => b.PerfModes, with => with
.OwnedCollection(p => p.FilterCriterion, with2 => with2
.OwnedCollection(fc => fc.Filters, with3 => with3
.AssociatedEntity(f => f.OperatorType)
.AssociatedEntity(f => f.CalcPoint))))
.AssociatedCollection(p => p.CalcPoints)
);
我可能沒有完全掌握EF圖和GraphDiff。如何確保多對多PerfModes/CalcPoints關聯得到正確更新?
編輯
找過andyp的回答後,我從GitHub拉低了最新版本GraphDiff和嘗試以下映射:
container.UpdateGraph(block, map => map
.OwnedCollection(b => b.CalcPoints)
.OwnedCollection(b => b.PerfModes,
with => with.AssociatedCollection(pm => pm.CalcPoints)));
這可以正確地更新我的PerfModes/CalcPoints關聯。我切換回原來的映射,並且仍然看到關聯沒有更新的問題,所以似乎嘗試一次更新整個模型存在問題。我可以做多個UpdateGraph調用,但是最好的辦法是將它們分開?
Here's與相關的代碼和失敗的單元測試的要點。
我繼承EF生成的容器類來創建禁用代理創建的我自己的上下文。這會導致GraphDiff出現問題嗎?
我會研究它,但我不願意鍵入所有的類,上下文等。你能否發佈你的整個代碼 - 包括一個**失敗的**單元測試 - *某處*(我想它只是將代碼粘貼到問題中)? [gist](https://gist.github.com/)也許.. – andyp
我在問題中添加了一個要點。 – Matt
只是一個快速更新:如果您刪除'.AssociatedEntity(f => f.CalcPoint)'一切按預期工作。我打算調試爲什麼這個關聯會導致問題,因爲我認爲它不應該 - 如果它是GraphDiff中的錯誤,我會修復它.. – andyp