Estoy trabajando en mi primer proyecto DDD, y creo que entiendo las funciones básicas de las entidades, los objetos de acceso a los datos y su relación. Tengo una implementación de validación básica que almacena cada regla de validación con su entidad asociada. Esto funciona bien para las reglas que se aplican solo a la entidad actual, pero se desmorona cuando se necesitan otros datos. Por ejemplo, si tengo la restricción de que un nombre de usuario debe ser único, me gustaría que la llamada IsValid() devuelva falso cuando hay un usuario existente con el nombre actual.¿Dónde debo poner un cheque único en DDD?
Sin embargo, no encuentro ninguna forma clara de mantener esta regla de validación en la propia entidad. Me gustaría tener una función IsNameUnique en la entidad, pero la mayoría de las soluciones para hacer esto requerirían que inyecte un objeto de acceso a los datos del usuario. ¿Debería esta lógica estar en un servicio externo? Si es así, ¿cómo guardo la lógica con la entidad misma? ¿O es algo que debería estar fuera de la entidad usuaria?
Gracias!
No funciona. Otro hilo puede insertar datos entre la comprobación y el guardado. – dariol