Un'unica struttura possibile per un'applicazione consiste nel suddividerla in moduli come Accesso ai dati, Core, Servizi, UI. Ora, a seconda del tipo di ORM che si sta utilizzando, il livello di accesso ai dati avrà un insieme di entità che rappresentano le tabelle nel database. Il livello principale avrà un insieme di entità che rappresentano la logica aziendale. Il livello di servizio avrà una serie di entità DTO che comunicherà con l'interfaccia utente. E infine l'interfaccia utente avrà una serie di modelli di vista che utilizzerà all'interno delle viste.
Ora, quando accediamo o archiviamo le informazioni nel database, dobbiamo trasformare gli oggetti da un tipo a un altro. Quando il servizio chiama il core di cui ha bisogno per trasformare gli oggetti da un tipo all'altro e infine l'interfaccia utente deve trasformare i DTO in View Models. In molti casi la trasformazione è un semplice atto di copiare le proprietà da un oggetto a un altro. È un'attività molto ripetitiva e dispendiosa in termini di tempo che genera grandi quantità di codice.
La mia domanda è che sto facendo qualcosa di sbagliato qui. Dovrei avere solo un tipo di entità? In caso affermativo, non pensate che avrebbe troppe informazioni in un oggetto per l'accesso ai dati, la logica aziendale, ecc ... Esiste un modo rapido per copiare le proprietà tra gli oggetti? La riflessione è un'opzione ma diventa complicata velocemente quando si ha a che fare con i grafici degli oggetti? So che non esiste un proiettile d'argento per risolvere questo problema, ma ci devono essere una serie di buoni approcci sulla copia delle proprietà a mano tra le entità?