DDDでネストされた集合体を扱います
-
18-09-2019 - |
質問
私はDDDで始めるんだ、と私はいくつかのトラブル私のデータのリレーショナルな性質に適応する方法を考え出すを抱えています。私は私が私の集約ルートとみなされるであろうと考えているものを持っているが、集計にも独自の集計を持っています。デメテルの法則に違反したくない、私はこの間違ったことを考えていると、いくつかのDDDの専門家は、いくつかの洞察を提供できることを期待しています場合、私は思ったんだけど。
私の集約ルートは、自身の個々のAccount
エンティティの論理グループです多数AccountElement
エンティティの集計を持っている私のProductComponent
オブジェクトです。
AccountElement
の文脈の外Account
は意味を持ちませんので、私はAccount
オブジェクトが私の集約ルートであるというのが私の結論と快適だし、私は、企業が集約Elements
性を有することを期待しています。それは私が混乱しているProductComponent
コレクションです。この集合体はAccountElement
の外では意味を持たない、との本当にのAccount
の外では意味がありません。
私はのように、それに私の方法に点在することによって、個々のProductComponent
オブジェクトにアクセスする必要があるとは思いません
var reference = account.Elements(0).ProductComponents(0).ReferenceCode;
しかし、同時にそれはProductComponent
エンティティから直接Account
にアクセスするには(ドメインの観点から)意味がありません。
私は、これは自分のドメインの知識がなくても理解するために、すべての少し難しいことを確信しているが、私はそれはいくつかの良いフィードバックを得るために十分です願っています。
解決
ロバートはにリンク先の記事は良いものです。私はProductComponentだけアカウントのコンテキストに存在しAccountElementとAccountElementのコンテキストでのみ存在する場合は、拡張子によってProductComponentアカウントのコンテキストであることを追加することになります。