Ho una domanda sul controllo dell'unicità in DDD. So già alcune domande su StackOverflow, ma in realtà non rispondono ai miei dubbiconvalida univoca in DDD
È possibile che una radice aggregata contenga il riferimento del repository per verificare l'unicità durante l'aggiornamento/l'inserimento nel database? O questo è il compito svolto dal servizio applicativo al posto del modello di dominio?
Diciamo che voglio verificare se il nome utente del modello User è unico quando il registro utente Ci sono diversi approcci che mi viene in mente:
- utente UserRepository modello di riferimento, fare il controllo unicità validate()
- creare un servizio di dominio per un controllo unicità, utilizzando UserRepository (questo sembra un po 'strano per me, perché penso che di solito servizio di dominio viene utilizzato solo nel caso in cui la durata della logica a più di un modelli di dominio)
- Creare un oggetto specifica nel livello dominio, con riferimento a Usa rRepository per incapsulare regola di controllo unico, e l'uso di applicazione livello di servizio questo per fare la verifica prima di aggiornamento/inserimento
E se uso Dependency Injection, sto ancora chiedendo su come iniettare UserRepository in uso nel metodo 1, o servizio di dominio nell'approccio 2, o servizio applicativo nell'approccio 3, perché in ogni caso, per l'oggetto/servizio dominio/oggetto della specifica, ho bisogno di istanziare l'oggetto manualmente, quindi l'unica opzione che ho sembra di usare il localizzatore di servizio in IoC per ottenere istanza. Ma il servizio di localizzazione è un anti-modello quindi voglio evitarlo
Ogni codice di esempio sarà molto apprezzato
Direi che dovresti implementarlo nel livello di servizio. Per essere più specifici, definire una classe di validatori per un tipo specifico di business logic (il comando) e gestire la convalida in un decoratore che si avvolge attorno alla classe di servizio. – Steven
Sarebbe utile? http://stackoverflow.com/a/11958251/625332 – Dmitry
@Steven quindi dovrei creare un UserValidator per implementare il controllo per Utente nel livello di servizio? Si considera la perdita della regola aziendale (unicità del nome utente) all'esterno del livello dominio? –