Quando persistiamo i dati, spesso capita di dover eseguire operazioni con Entity Framework e altre operazioni con comandi che lanciano query SQL o stored procedure. Per mettere nella stessa transazione tutte le operazioni possiamo usare la classe TransactionScope oppure possiamo passare al costruttore della classe DbContext una connessione con una transazione.
Prima di invocare il metodo SaveChanges dobbiamo usare il metodo UseTransaction passando in input la transazione. In questo modo la classe DbContext userà la nostra transazione per le operazioni. Un esempio del codice è visibile nel prossimo esmepio.
using (var conn = new SqlConnection("connectionstring")) { conn.Open(); using (var trans = conn.BeginTransaction()) { try { var sqlCommand = new SqlCommand(); sqlCommand.Connection = conn; sqlCommand.Transaction = sqlTxn; sqlCommand.CommandText = "delete from product where productid = 1" //esegue una query custom sqlCommand.ExecuteNonQuery(); using (var context = new MyContext(conn, contextOwnsConnection: false)) { //indica al contsto di usare la nostra transazione context.Database.UseTransaction(trans); //attacca entità al contesto per la persistenza ... //esegue la persistenza sfruttando la nostra transazione context.SaveChanges(); } //esegue il commit della transazione trans.Commit(); } catch { //esegue il rollback della transazione in caso di errori trans.Rollback(); } } }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Paginare i risultati con QuickGrid in Blazor
Eseguire query verso tipi non mappati in Entity Framework Core
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Gestire undefined e partial nelle reactive forms di Angular
Code scanning e advanced security con Azure DevOps
Inizializzare i container in Azure Container Apps
Usare le collection expression per inizializzare una lista di oggetti in C#
Configurare policy CORS in Azure Container Apps
Utilizzare le Cache API di JavaScript per salvare elementi nella cache del browser
Eseguire una query su SQL Azure tramite un workflow di GitHub
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
I più letti di oggi
- Vuoi incontrare Bill Gates? Viaggia con ASPItalia.com!
- Customizzare il pager del DataGrid
- Stabilire un collegamento VPN tra una Web App e una Virtual Network
- Documentare ASP.NET Web API con Swagger
- Usare i servizi REST di BING per ottenere informazioni sulla posizione dell'utente
- Visual Studio 2005 CTP May