【发布时间】:2019-10-31 18:18:30
【问题描述】:
我已经开始使用领域驱动设计原则,但目前遇到了一个特定问题。
我有一个具有多层嵌套子实体的聚合,如下所示:
public class Aggregate: Entity<AggregateId>, IAggregateRoot {
private readonly List<ChildOne> childOnes;
}
public class ChildOne: Entity<ChildOneId> {
public string ChildOneValue1;
public string ChildOneValue2;
public string ChildOneValue3;
private readonly List<ChildTwo> childTwos;
}
public class ChildTwo: Entity<ChildTwoId> {
public string ChildTwoValue1;
public string ChildTwoValue2;
public string ChildTwoValue3;
}
在域服务中,我需要访问 ChildOne 和 ChildTwo 的所有值,包括它们的 ID。
public interface IDomainService {
public IEnumerable<INotification> Analyze(Aggregate aggregate);
}
但是,我不能按原样返回实体,因为这会违反不变性原则。
这让我想到我的域模型可能不是最优的,但我看不出这有什么不同,因为没有相应的父级嵌套实体永远不会存在。
另一种方法是使用一个值对象来保存给定实体的所有值,然后返回这个值对象而不是实体。但随后需要执行深度映射,因为域服务需要访问所有嵌套实体的值。
关于如何解决这个问题有什么建议吗?
【问题讨论】:
标签: nested entity domain-driven-design