我在玩 DDD 并且弹出这个问题。我如何加载子聚合根?会出现几个性能问题。想象以下示例:
public AggregateRoot1
{
#region
properties
#endregion
public AggregateRoot2 AR2{get;set;}
public IEnumerable<AggregateRoot3> AR3List{get;set;}
(...)
}
如果我在获得 AggregateRoot1 时加载 AggregateRoot2 和 AggregateRoot3 列表,则该图会很大。这似乎不是一个好方法。
我有两个选择:
- 将AggregateRoot2 AR2替换为Guid AR2Id和IEnumerable AggregateRoot3> AR3List 替换为IEnumerable Guid> AR3ListIds。所有 AR 引用都应替换为 ID。
- 因为我不喜欢 IEnumerable ARListIds 方法,所以我正在考虑删除 0...* 对 AR 的引用。所有需要 AR 列表数据的操作都应该通过像 David Masters 这样的域服务来完成
顺便说一句,我不考虑使用延迟加载。
我期待听到您对儿童 AR 加载的意见。谢谢