2013-06-04 20 views
1

在許多DDD例子中,我們有一個簡單的:如何避免在另一個非根集合中持有對非根集合的引用?

訂單(聚合根[AR]) 和 訂單行(聚集構件[AM])

+

發票(聚合根[AR] ) 和 InvoiceLine(聚集構件[AM])

在該例子中,我們就發出訂單的發票所以它是從一個AR(發票)到另一個(訂單直接參考),它顯然是正確的。

然而,在我的情況下,事情比較複雜:

出具從不同的訂單很多OrderLines發票。

所以對一個發票,我們有: InvoiceLine#1引用到訂單行#1從訂單#1, 另一InvoiceLine#2引用到訂單行#2(從另一個訂單#2)

,並且對於例如,沒有InvoiceLine引用訂單#1中的OrderLine#2。

如何解決這種情況?

看來我們必須在InvoiceLine中引用OrderLine,這是不正確的,afaik。但我沒有其他想法:/

在此先感謝您的任何建議。

回答

0

您不應將真實對象實例引用從一個AR保存到另一個AR。任何實體引用都應該是暫時的。

您應該只存儲標識符。

就您而言,您可以在相關的InvoiceLine條目中存儲訂單ID和訂單行號。它甚至可能是一個價值對象。

通過這種方式,您可以在從存儲庫獲取發票AR時不會遇到任何對象檢索問題。

+0

哎喲,你完全正確,對我感到羞恥......謝謝! – drep

相關問題