risposta

8

Se si chiama SaveChanges() più volte e si desidera ripristinare tutte queste modifiche, si si desidera utilizzare uno TransactionScope. Se si chiama SaveChanges() una volta nel contesto, tutte le modifiche vengono inviate al database contemporaneamente in una transazione dietro le quinte.

+0

Solo una conferma richiesta per il seguente scenario: In caso chiami SaveChanges() una volta per più CRUD operazioni, devo disporre l'oggetto DbContext per il rollback della transazione. – Jas

+0

Non penso che lo smaltimento di 'DbContext' ripristinerà la transazione. Se questo è il caso, probabilmente si vuole cercare nelle opzioni di overload per 'SaveChanges()' che è possibile disabilitare il commit automatico della transazione e si dovrebbe incaricarsi di chiamare 'AcceptAllChanges()'. http://msdn.microsoft.com/en-us/library/bb739065.aspx –

+0

Ma il collegamento msdn che hai fornito indica che l'API di ObjectContext.SaveChanges() è ora obsoleta. Inoltre, ObjectContext.SaveChanges() eseguirà il rollback dell'intera transazione in caso di un'eccezione generata da SQL Server. Inoltre, non esiste un modo più semplice per eseguire il rollback delle mie operazioni CRUD utilizzando DbContext? – Jas

Problemi correlati