タイトルのとおり、次のクラスがあります。
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