Где я должен поставить уникальную проверку в DDD?

Я работаю над своим первым проектом DDD и думаю, что понимаю основные роли сущностей, объектов доступа к данным и их взаимосвязи. У меня есть базовая реализация валидации, в которой каждое правило валидации хранится вместе с соответствующей сущностью. Это хорошо работает для правил, которые применяются только к текущему объекту, но распадаются, когда нужны другие данные. Например, если у меня есть ограничение на то, что имя пользователя должно быть уникальным, я бы хотел, чтобы вызов IsValid () возвращал false, когда существует существующий пользователь с текущим именем.

Однако я не нахожу никакого чистого способа сохранить это правило проверки на самом объекте. Я хотел бы иметь функцию IsNameUnique на объекте, но большинство решений для этого потребовали бы, чтобы я внедрил объект доступа к данным пользователя. Должна ли эта логика быть во внешней службе? Если да, то как мне сохранить логику с самой сущностью? Или это то, что должно быть за пределами пользовательского объекта?

Спасибо!

Ответы на вопрос(3)

Ваш ответ на вопрос