Ho trovato la risposta nella documentazione di Entity Framework 6:
Con l'introduzione di EF6, Microsoft consiglia di utilizzare nuovi metodi API: Database.BeginTransaction()
e Database.UseTransaction()
. Sebbene System.Transactions.TransactionScope
sia ancora molto ben supportato, non è più necessario per la maggior parte degli utenti di EF6.
Sebbene Database.BeginTransaction()
sia utilizzato solo per le transazioni di operazioni relative al database System.Transactions.TransactionScope
, oltre a ciò, rende possibile che anche il "codice C # normale" sia transazionale.
Quindi, utilizzare Database.BeginTransaction()
dove mai si eseguono solo operazioni relative a db in una transazione in EF6, altrimenti utilizzare System.Transactions.TransactionScope
per combinare operazioni db e codice C # insieme in una transazione.
Per coloro che preferiscono ancora l' TransactionScope
approccio, si consiglia di verificarne i limiti, soprattutto negli scenari cloud (gli scenari cloud non supportano le transazioni distribuite).
Ulteriori informazioni possono essere trovate qui