2

ルートを経由せずにアグリゲートから読み取り専用コレクションを取得しても大丈夫ですか?私のモデルは現在これのいくつかを行っており、それが許容できる設計であるかどうか疑問に思っていました。ありがとう

編集:

これが例です

UserAccountという集約ルートエンティティとVideoStoreという別の集約ルートがあります。ユーザーは離れた場所に複数の店舗を持つことができ、ビデオ店には多くのユーザーがいる可能性があります。非常に基本的な多対多ですが、多対多のブリッジテーブルに状態情報が含まれているためではないため、エンティティでもある必要があります。したがって、UserVideoStoresというブリッジエンティティと、その集約ルートVideStore(1対多)の子があります。

ここで、ユーザーがログインするときに、どのVideoStoreから離れているかを調べて、その情報を表示したいと思います。UserAccountエンティティに、集約ルートVideoStoreの子UserVideoStoresへの直接(1対多)参照を持たせることで、これを簡単に行うことができます。これを行う方が簡単なようです。HQLクエリを使用し、グラフの下から上に向かって検索して、ユーザーが離れているストアを見つける必要があります。

それは理にかなっていますか?

編集:

さて、私は自分のモデルをよりクリーンにするための解決策を思いつきました。私は自分のデザインのいくつかについてまっすぐに考えていませんでした、そして私は解決策を考え出すのを助けるためにnHibernateをもう少しうまく使う方法を学びました。ありがとう

4

2 に答える 2

2

実際、エリックは集約ルートルールの厳格さについて考えを変えました。
彼は最近、

「男を冷やしてください。ルールマンを破らないようにしてください。しかし、ねえ、それを打ち負かさないでください。DDDは男を揺さぶるが、本当に必要な場合はAggルールを破ってください。ええ、平和です。」

参照:「EricEvans:本以来DDDについて学んだこと」 http://dddcommunity.org/library/evans_2009_1

于 2010-01-22T12:03:45.903 に答える
2

Evans は、「ルートは、外部オブジェクトが参照を保持できる AGGREGATE の唯一のメンバーです...」 (p. 127)

私の理解では、集約は外部オブジェクトの単位として表示される必要があります。また、デメテルの法則が適用されるようです。結論として、私はそれが受け入れられるとは思わない。

于 2009-07-13T20:37:08.483 に答える