私はDDDで遊んでいますが、この質問がポップアップします。子の集約ルートをロードするにはどうすればよいですか? いくつかのパフォーマンスの問題が発生します。次の例を想像してください。
public AggregateRoot1
{
#region
properties
#endregion
public AggregateRoot2 AR2{get;set;}
public IEnumerable<AggregateRoot3> AR3List{get;set;}
(...)
}
AggregateRoot1 を取得するときに AggregateRoot2 と AggregateRoot3 のリストをロードすると、グラフが巨大になります。これは良いアプローチとは思えません。
2 つのオプションがあります。
- AggregateRoot2 AR2をGuid AR2Idに置き換え、IEnumerable AggregateRoot3> AR3ListをIEnumerable Guid> AR3ListIdsに置き換えます。すべての AR 参照は、ID で置き換える必要があります。
- 私は IEnumerable ARListIds アプローチが好きではないので、0...* AR への参照を削除することを考えています。AR のリスト データを必要とするすべての操作は、David Masters sugest hereのようなドメイン サービスを介して行う必要があります。
ところで、遅延読み込みの使用は考えていません。
子ARの読み込みについてご意見をお待ちしております。ありがとう