J'ai une IDbTransaction dans une instruction using mais je ne suis pas sûr qu'elle sera annulée si une exception est levée dans une instruction using. Je sais qu'une instruction using impose l'appel de Dispose()... mais quelqu'un sait-il s'il en va de même pour Rollback() ?
Mise à jour : De plus, dois-je appeler Commit() explicitement comme je l'ai fait ci-dessous ou cela sera-t-il pris en charge par l'instruction using ?
Mon code ressemble à ceci :
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();
}
}
3 votes
Bonjour, juste pour clarifier le cas du "commit". Il est bien sûr obligatoire car, le using(){} appelle simplement la méthode Dispose(). La classe Transaction.Dispose ne pourrait pas savoir si elle doit Commit ou Dispose si le Commit était aussi automatique :)
0 votes
Voir aussi stackoverflow.com/questions/6418992/