Ho un IDbTransaction in un'istruzione using, ma non sono sicuro se verrà eseguito il rollback se viene generata un'eccezione in un'istruzione using. So che un'istruzione using imporrà la chiamata di Dispose() ... ma qualcuno sa se lo stesso vale per Rollback()?Se si verifica un errore, verrà utilizzato un rollback dell'istruzione utilizzando una transazione di database?
Aggiornamento: Inoltre, è necessario chiamare Commit() in modo esplicito come indicato di seguito o sarà anche preso in considerazione dall'istruzione using?
mio codice è un po 'come questo:
using Microsoft.Practices.EnterpriseLibrary.Data;
...
using(IDbConnection connection = DatabaseInstance.CreateConnection())
{
connection.Open();
using(IDbTransaction transaction = connection.BeginTransaction())
{
//Attempt to do stuff in the database
//potentially throw an exception
transaction.Commit();
}
}
Ciao, giusto per chiarire il caso di "commit". Ovviamente è obbligatorio perché l'uso di() {} chiama semplicemente il metodo Dispose(). La classe Transaction.Dispose non può sapere se deve eseguire commit o Dispose se anche il commit è automatico :) –
Vedere anche http://stackoverflow.com/questions/6418992/is-it-a-better-practice-to-explicitly -call-transaction-rollback-or-let-an-except – nawfal