ドメイン駆動設計(DDD)では、エンティティは常に独自のIDを持っています。
DDDを読んでいると、エンティティと集約ルートの間の「一意のアイデンティティ」の概念が混在しているように見えるステートメントと例を見てきました。例によっては、次のことを意味する場合があります。
- 以下のインターフェースの1つだけが必要です。
また
- 両方必要です。
「EricEvanstypeDDD」に関しては、どちらのアプローチが「正しい」か知りたいです。
たとえば、エンティティがこのインターフェイスを実装し、このメソッドが呼び出されたときにGUIDを返すとします。
public interface IEntity
{
object IdThatIsUniqueForThisEntityObject { get; }
}
以下のものも必要ですか?
public interface IAggregateRoot
{
object IdThatIsUniqueForThisAggregateRootObject { get; }
}
アグリゲートルートは、ルートエンティティのID(IdThatIsUniqueForThisEntityObject)とは別の独自のID(IdThatIsUniqueForThisAggregateRootObject)を表すことができるように、上記のようなインターフェイスを実装する必要がありますか?
または、集約ルートは、ルートエンティティ(IdThatIsUniqueForThisEntityObject)を使用して、集約ルートの一意のIDを表す必要がありますか?