In un'applicazione EF6 DB-first, abbiamo un livello di accesso ai dati che gestisce tutte le interazioni con EF.
Gli oggetti estratti dal contesto sono classi C # generate da EF, che vengono quindi mappati su POCO equivalenti nel livello aziendale. Questo è un approccio suggerito comunemente in quanto disaccoppia i livelli.
Quindi mentre l'applicazione è in esecuzione, alcuni oggetti nel livello aziendale vengono modificati (alcuni nuovi possono essere aggiunti anche, altri eliminati). Quando le modifiche devono essere salvate nel DB, gli oggetti vengono ricondotti al livello aziendale. Il problema è quando EF riceve questi oggetti, non ha idea di quali entità siano cambiate e quali no.
Qual è un buon modo per avvicinarsi a questo? (dato che centinaia o migliaia di oggetti possono o non possono essere cambiati)
Ho visto altri progetti risolvere questo problema tenendo traccia delle modifiche negli elenchi: NewObjects, UpdatedObjects, DeletedObjects
. Il problema ovvio qui è che ogni volta che qualcosa cambia, gli sviluppatori devono ricordare di aggiornare l'elenco appropriato. Questo finisce con un sacco di confusione extra, ed è molto facile fare un errore.