集約ルートの背後にあるエンティティにアクセスするにはどうすればよいですか?

私はDDDの最初の週に入っており、集約されたルーツを持つ2つのエンティティを定義しています。

私は、集合体の外部の外部エンティティが集合体内の実体を参照することはできないので、外部実体は集合体の根を参照しなければならないと読んでいます。

私のソリューションを間違ってモデリングしない限り、集約ルートの背後にあるエンティティへの参照が必要です。このような状況を回避するには、この状況をどのように処理するか、ドメインを改造する必要がありますか?

JD

1
いくつかのコードを見ると、これに答えるのに役立ちます。
追加された 著者 Don Roby,

1 答え

あなたはおそらくあなたのモデルを改良することができます。集約内のエンティティへの外部参照が必要な場合、それは内部エンティティが集約ルート自体である可能性があることを示す強力な指標です。

私はあなたの特定のモデルについて何も知らないので、もちろんこれは一般的なアドバイスです。

集合デザインに関するアドバイスを得るには、この Vaughn Vernonの記事をご覧ください。第I部「集約のモデリング」では、具体的に集計された細分性に焦点を当てています。

3
追加された
ご返信ありがとうございます。私が見つけたのは、私が自分のエンティティを集約ルートと考えるようになったのです。そして、集計ルートを参照している集計ルーツがたくさんあることがわかりました。これは正しいと思いますか?
追加された 著者 JD.,
@ Yves、あなたのお勧めに感謝します。深いグラフがあり、ローカルエンティティがいくつかのオブジェクトが深い場合はどうなりますか?だから私は何を追跡するだろう(すべてのエントリオブジェクトID)?
追加された 著者 JD.,
私は最初の段落に全く同意しません。私は、 "集約id +ローカル(集約)エンティティID"が外部に伝達され、別の集約内で追跡できることを発見しました。これは一般的な推奨ではありませんが、役に立つことがあります。
追加された 著者 Yves Reynhout,
Dennisが述べたように、これは集約が実際何であるかに照らして見る必要があります(白書参照)。大規模なエンティティのクラスタが一貫していることが本当に必要な場合は、それらを同じ集約内に置くことができます。深さは構造的なものであり、この議論ではIMOは無関係です。集約は、一貫性と将来の行動を強制するために必要なすべての状態を追跡する責任があります。私は、例を使ってあなたの質問を言い換えると、あなたに健全なアドバイスを与える方がずっと簡単だと思います。
追加された 著者 Yves Reynhout,