Opzione 1:
In un primo momento avrei effettuato una chiamata al mio livello di servizio, che serviva da API per il mio dominio principale, per ottenere un oggetto dominio o un elenco di oggetti dominio e quindi passarli nell'assembler che costruiva i DTO di cui avevo bisogno per la mia vista Il problema che ho con questo approccio sono i casi in cui l'oggetto dominio è grande e non voglio caricare l'intero oggetto solo per copiare alcuni campi necessari per il DTO (cioè mostrare un elenco di entità dei sommari).
Opzione 2:
Il prossimo approccio che ho usato è stato quello di collegare un repository (per scopi di sola lettura) al mio assemblatore in modo da poter interrogare il database solo per i campi che mi servono nel DTO. Posso anche usare questo repository quando ottengo un DTO e devo usarlo per aggiornare ed entità. Ad esempio, un DTO riempito valuterà i valori che ho bisogno di aggiornare sulla mia entità entra nel mio assemblatore, l'assemblatore cerca l'entità da un repository e quindi sovrappone le informazioni dal DTO all'entità e quindi restituisce l'entità. Il controller chiama quindi il livello di servizio per salvare l'entità restituita dall'assemblatore.
Opzione 3:
Potrei collegare i repository direttamente ai controller ma qualcosa sull'esposizione del repository nel controller mi sembra sbagliato perché il livello del servizio dovrebbe gestire le transazioni e la sicurezza, ma poi di nuovo, se metto un repository nell'assemblatore I sto fondamentalmente facendo la stessa cosa.
Ogni pensiero è benvenuto. Voglio solo capire i pro ei contro e ciò che ha funzionato bene per gli altri.