Ограничение уникальности можно свести к исключению постоянства, а не рассматривать как «недопустимое состояние». Это недопустимое состояние, пока объект не будет сохранен. Уникальность имеет большой смысл только в контексте постоянства. Реально, вы можете поместить этот тип правил в свой механизм проверки, чтобы помочь уменьшить вероятность этой ошибки, но в любой реальной многопользовательской системе вы не можете быть уверены в уникальности, пока успешная единица работы не завершит действие постоянства.
Так что вы можете захотеть это в своем механизме валидации, но вы должны применить его на своем уровне персистентности.
Я, как правило, фанат DDD как методологии, но я думаю, что «не позволяйте объектам входить в недопустимые состояния» может потребовать некоторых извилистых абстракций. В веб-приложении наличие отдельной «модели представления» является одним из возможных решений в качестве промежуточного уровня перед сохранением, но я обычно не делаю этого, пока не убедлюсь, что это причинит мне меньше боли, чем более простая альтернатива.