Чтобы еще больше прояснить мою первоначальную проблему, я переписал вопрос, добавив больше терминов «DDD», общих шаблонов и аргументов для обсуждения. Исходную версию можно найти в разделе «Редакция».
Где и как идентификаторы для объектов/агрегированных корней генерируются внутри домена при правильном применении DDD?
Мне нужно назначить уникальные идентификаторы моим объектам либо при создании, либо упорный. Эти идентификаторы могут быть нескольких стилей.
- Вычисляемые (на основе характеристик объекта, следовательно, на основе бизнес-требований)
- Естественные (на основе определенного набора правил, следовательно, на основе бизнес-логики)
- Суррогатные (основанные на случайно сгенерированных значениях, не имеющих бизнес-значения)
Требования как указано выше
- Нет анемичных доменных моделей
- Нет внедрения зависимостей сервисов в объекты
- Фабрики
- Двойная диспетчеризация (можно ли это использовать для идентификации генерация?)
- Генерация внутри репозиториев
- Генерация внутри инфраструктуры (например, ORM или база данных)
- Внедрение сервисов в объекты