ciao Galeazzo
con ef puoi persistere le modifiche senza azzerare il context. In questo modo in caso di validazione post fallita puoi attraversare gli oggetti del context e ripristinare lo stato precedente.
Questo a grandi linee perche personalmente non ho mai avuto bisogno di addentrarmi piu di tanto in questo ramo di EF se non teoricamente quando l'ho dovuto imparare.
Potresti, nell'ambito di un metodo di una classe di business, fare qualcosa tipo:
questo a grandi linee, ora la parte piu complessa è capire se o in che misura è fattibile l'operazione di rollback in casi complessi come i tuoi, per questo credo ci sia bisogno di studiare ef piu approfonditamente e testare.codice://eseguo operazioni sul context. il context si popola di oggetti con relativo ObjectState //persisto ma lascio che il context continui a tenere traccia dello stato degli oggetti attraverso l'objectStateManager. ctx.SaveChanges(false); //lancio le SP if (esito == ok) //ctx.AcceptAllChanges(); //azzero il context, tutti gli oggetti e i relativi stati vengono eliminati else //avvalendomi degli oggetti ancora presenti nel context (tracciati dall'objectstateManager) eseguo il rollback.
P.S.
visto che devi riscrivere parte del software non si potrebbe pensare di spostare un po di logica prima della persistenza?

Rispondi quotando