Если Сущность становится корнем Сводного агрегата, использует ли Сводный Корень существующий идентификатор корневого Сущности или АР создает свой собственный ИД? - PullRequest
0 голосов
/ 23 мая 2011

В доменно-управляемом дизайне (DDD) у сущности всегда есть свой уникальный идентификатор.

В моем чтении по DDD я видел утверждения и примеры, которые, кажется, смешивают понятия «уникальная идентичность» между сущностями и совокупными корнями. В зависимости от примера они могут подразумевать, что:

  • Мне нужен только один из приведенных ниже интерфейсов.

или

  • Мне нужны оба.

Я хотел бы знать, какой подход является "правильным" в том, что касается "DDD типа Эрика Эванса".

Например, предположим, что ваши сущности реализуют этот интерфейс и возвращают GUID при вызове этого метода:

public interface IEntity
{
   object IdThatIsUniqueForThisEntityObject { get; }
}

Вам тоже нужна нижняя или нет?

public interface IAggregateRoot
{
   object IdThatIsUniqueForThisAggregateRootObject { get; }
}

Нужно ли Aggregate Root реализовать интерфейс, подобный описанному выше, чтобы он мог представлять свой собственный уникальный идентификатор (IdThatIsUniqueForThisAggregateRootObject), который отделен и отличается от идентификатора его корневого объекта (IdThatIsUniqueForThisEntityObject)?

Или должен ли Совокупный корень просто использовать корневой объект (IdThatIsUniqueForThisEntityObject) для представления уникального идентификатора Совокупного корня?

1 Ответ

2 голосов
/ 23 мая 2011

Вам нужен только EntityId. Не создается дополнительная Агрегированная корневая идентичность. Агрегированный корень - это агрегат, который используется для управления доступом и организации объектов как единой единицы работы с базой данных. Агрегат не предоставляет какого-либо «нового» или дополнительного идентификатора для объекта.

У сущности всегда есть уникальная сущность, и этого должно быть достаточно. По определению, операция, которая извлекает сущность, которая является корнем совокупности, также извлекает совокупность при этом. Не существует понятия сущности, которая иногда является просто отдельной сущностью, а иногда - совокупным корнем. Таким образом, вообще нет необходимости в концепции «совокупной корневой идентичности».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...