Существует несколько видов проверки.
Во-первых, это формальная валидация, которая должна быть выполнена для любого объекта или значения, которое должно быть обработано. Например, "имя поля обязательно для этого набора полей". Или «имя должно быть не пустым». И так далее. Эта логика проверки принадлежит фабрикам или конструкторам сущностей / значений и не нуждается во внешних вызовах.
Другой тип - проверка бизнес-правил на предмет текущего состояния системы. Например, «вы не можете добавить правило маршрутизации, которое сделало бы маршрутизацию неоднозначной». Вы можете поместить эту логику в доменные службы, если она включает в себя более одного объекта / агрегата. Или вы можете поместить его в сущность, при условии, что вы вызываете его из прикладного уровня со всеми необходимыми внешними данными для принятия решения о валидации.
Наконец, на уровне БД существуют правила, предназначенные для сохранения согласованности данных. Они естественным образом соответствуют ограничениям БД и относятся к репозиториям.
Итак, в вашем случае все будет в порядке, если поместить его в конструктор сущностей.