Onde devo colocar um cheque exclusivo no DDD?

Estou trabalhando no meu primeiro projeto DDD e acho que entendo os papéis básicos de entidades, objetos de acesso a dados e seu relacionamento. Eu tenho uma implementação de validação básica que armazena cada regra de validação com sua entidade associada. Isso funciona bem para regras que se aplicam apenas à entidade atual, mas desmorona quando outros dados são necessários. Por exemplo, se eu tiver a restrição de que um nome de usuário deve ser exclusivo, gostaria que a chamada IsValid () retornasse false quando houver um usuário existente com o nome atua

No entanto, não estou encontrando nenhuma maneira limpa de manter essa regra de validação na própria entidade. Eu gostaria de ter uma função IsNameUnique na entidade, mas a maioria das soluções para isso exigiria que eu injetasse um objeto de acesso a dados do usuário. Essa lógica deve estar em um serviço externo? Se sim, como ainda mantenho a lógica com a própria entidade? Ou isso é algo que deve estar fora da entidade do usuário?

Obrigado

questionAnswers(6)

yourAnswerToTheQuestion