2009-07-13 7 views
2

集計から読取り専用コレクションを取得するには、ルートを経由せずに取得するのは大丈夫ですか?私のモデルは今、このうちのいくつかをしており、それが許容可能な設計かどうか疑問に思っていました。おかげ集計ルートをバイパスする

編集:

は、ここで私はUserAccountのと呼ばれる集約ルートエンティティとVideoStoreと呼ばれる別の集計ルートを持っている例

です。ユーザーは離れている複数のストアを持つことができ、ビデオストアは多くのユーザーを持つことができます。非常に基本的な多対多ですが、多対多のブリッジテーブルには状態情報が含まれているため、エンティティでなければなりません。だから、私はUserVideoStoresというブリッジエンティティとその集合ルートVideStore(1対多)の子を持っています。

ユーザーがログインすると、自分が離れているVideoStoresを検索してその情報を表示したいと考えています。 UserAccountエンティティに、集約ルートのVideoStoresの子(UserVideoStores)へのダイレクト(一対多)参照を持たせることで、これを簡単に行うことができます。これを行うほうが簡単なようで、HQLクエリを使用して、グラフの最下部からユーザーが離れているストアを探す必要があります。

それは意味がありますか?

編集:

まあ私のモデルクリーナーを作るための解決策を思いついた。私は自分のデザインのいくつかについて真っ直ぐ考えていませんでした。そして、私は解決策を考え出すためにnHibernateを少し使いやすくする方法を学びました。おかげ

+0

は、あなたが例を与えることができますか? – Paco

答えて

2

エバンスは、私の理解では、集合体単位として表示されなければならないことである(P。127)

「根が外のオブジェクトがへの参照を保持するために許可されていることをAGGREGATEの唯一のメンバーである...」と言います外側のオブジェクトに。また、Law of Demeterが適用されるようです。結論として、私はそれが受け入れられるとは思わない。

+0

ええ、あなたは正しいです。私はそのデザインでいくつかの法律を破っていた。私はおそらくエヴァンのDDDの本を読む必要があります。それはおそらく私を助けてくれるだろう。ありがとう – CalebHC

2

実際、Ericは集約ルートルールの厳格さについて心を変えました。
彼は最近ちょっと、DDDは男を岩。その上に自分自身を打ちのめすが、AGGを壊していない、ルールの男を破壊から自分を停止するようにしてください。「男をチルアウト

の線に沿って何かを言った。しかし、ええ、本当に必要な場合はルール。ええ、平和。

を参照してください: 「エリック・エヴァンス:私はこの本以来DDDについて学んだこと」http://dddcommunity.org/library/evans_2009_1

関連する問題