Sto lavorando al mio primo progetto DDD e penso di capire i ruoli di base delle entità, degli oggetti di accesso ai dati e della loro relazione. Ho un'implementazione di convalida di base che memorizza ogni regola di convalida con la sua entità associata. Funziona bene per regole che si applicano solo all'entità corrente, ma cade a pezzi quando sono necessari altri dati. Ad esempio, se ho la restrizione che un nome utente debba essere univoco, vorrei che la chiamata IsValid() restituisca false quando c'è un utente esistente con il nome corrente.Dove devo inserire un assegno univoco in DDD?
Tuttavia, non sto trovando alcun modo pulito per mantenere questa regola di validazione sull'entità stessa. Mi piacerebbe avere una funzione IsNameUnique sull'entità, ma la maggior parte delle soluzioni per farlo richiederebbe l'iniezione di un oggetto di accesso ai dati utente. Questa logica dovrebbe essere in un servizio esterno? Se è così, come faccio a mantenere la logica con l'entità stessa? O è qualcosa che dovrebbe essere al di fuori dell'entità utente?
Grazie!
Non funziona. Altri thread possono inserire dati tra il controllo e il salvataggio. – dariol