Per molto tempo ho utilizzato AutoMapper per associare i miei modelli di dominio ai miei DTO e per mappare il DTO ai modelli di dominio.Modello di progettazione per la mappatura di DTO contenenti raccolte secondarie sui modelli di dominio
Sto usando EF4 per il mio ORM e questa mappatura diventa davvero brutta quando il modello che si sta mappando contiene collezioni figlio che devono essere aggiunte/aggiornate/rimosse da. Mentre proseguo con il mio progetto continuo a correre questo problema sempre di più: foto per un post di blog, pacchetti per un ordine, ecc.
Quando si passa da DTO-> modello di dominio, finisco per dover aggiungere un Chiamata BeforeMap che rimuove tutte le entità dalla collezione del modello di dominio e quindi aggiunge un valore ValueResolver personalizzato per la raccolta che preleva il PK di ogni entità dal DTO, lo acquisisce dal DB (in modo che Entity Framework non ritenga di aggiungere una nuova entità) e la aggiunge nuovamente alla raccolta del modello di dominio e quindi applica eventuali aggiornamenti ai singoli campi.
Questa è una soluzione davvero brutta, ma lo sono anche i miei tentativi di gestire manualmente l'aggiornamento di queste raccolte. Qualcuno ha qualche suggerimento per un approccio più pulito?
L'utilizzo di Automapper per mappare i modelli di dominio probabilmente significa che non si utilizza Domain Driven Design. Sto solo dicendo – jfar
Non è realistico per me voler gestire questa mappatura in modo pulito usando una soluzione di mappatura auto-magica? Dovrei invece creare un servizio esclusivamente per l'aggiornamento dei miei modelli di dominio dai miei DTO? – inolen
@jfar come capisci? Innanzitutto, un modello di dominio non è sinonimo di DDD. Implicando che i modelli di dominio non dovrebbero essere mappati, la mano sventolando come "non utilizza Domain Driven Design", e non fornendo alcuna ulteriore spiegazione non sembra molto utile, vero? In un'architettura a livelli non è raro trovare un livello di servizio che si trova sopra il modello di dominio. Inoltre, non è raro che il livello di servizio comunichi con il dominio, l'interfaccia utente e altri livelli tramite un oggetto di trasferimento, contribuendo a mantenere una "linea luminosa" tra questi livelli. – nerraga