根据标题,我有以下课程:
public class Company : AggregateRoot {
public AddressBook AddressBook { get; set; }
}
public class AddressBook {
public List<Address> Addresses { get; set; }
public Address GetPrimaryAddress() {
return Addresses.FirstOrDefault();
}
}
我是否可以致电:
company.AddressBook.GetPrimaryAddress();
或者我应该公开一个GetPrimaryAddress()
方法Company
,然后调用该AddressBook
方法?
我知道我不应该引用AggregateRoot 中的实体,但我不确定调用操作的规则是什么。
更新
对于它的价值,下面是我的实际模型的图表(单击此处查看全尺寸) 。包含有关应如何管理所有类型的联系人(个人/业务位置)的规则,例如删除主要联系人时会发生什么。它还解决了一些关于 RavenDB 如何存储嵌套实体的警告(本质上我们需要提供我们自己的 Id 策略 - 因此是 LastContactId 属性)。ContactList