В доменно-управляемом дизайне (DDD) у сущности всегда есть свой уникальный идентификатор.
В моем чтении по DDD я видел утверждения и примеры, которые, кажется, смешивают понятия «уникальная идентичность» между сущностями и совокупными корнями. В зависимости от примера они могут подразумевать, что:
- Мне нужен только один из приведенных ниже интерфейсов.
или
Я хотел бы знать, какой подход является "правильным" в том, что касается "DDD типа Эрика Эванса".
Например, предположим, что ваши сущности реализуют этот интерфейс и возвращают GUID при вызове этого метода:
public interface IEntity
{
object IdThatIsUniqueForThisEntityObject { get; }
}
Вам тоже нужна нижняя или нет?
public interface IAggregateRoot
{
object IdThatIsUniqueForThisAggregateRootObject { get; }
}
Нужно ли Aggregate Root реализовать интерфейс, подобный описанному выше, чтобы он мог представлять свой собственный уникальный идентификатор (IdThatIsUniqueForThisAggregateRootObject), который отделен и отличается от идентификатора его корневого объекта (IdThatIsUniqueForThisEntityObject)?
Или должен ли Совокупный корень просто использовать корневой объект (IdThatIsUniqueForThisEntityObject) для представления уникального идентификатора Совокупного корня?