5

How Can I check if a dotnet transaction is closed or not ?

Mahesh Velaga
  • 21,633
  • 5
  • 37
  • 59
Relativity
  • 6,690
  • 22
  • 78
  • 128

3 Answers3

3

Your title asks one thing and your question asks another. so, I am going with your title.

If you want to know if the transaction is rolled back or set to rollback only, you can check

transaction.WasRolledBack // true if transaction is rolled back

Here, transaction is an instance of ITransaction

Edit (based on your comment):

var isRolledBack = false;
using (var connection = new SqlConnection())
{
  using (var transaction = connection.BeginTransaction())
  {
    try
    {
      // do your stuff here with transaction
    }
    catch (Exception ex)
    {
      transaction.Rollback();
      isRolledBack = true;
      throw;
    }
  }
}

Now, you can check the isRolledBack flag to see if the transaction is rolled back

Mahesh Velaga
  • 21,633
  • 5
  • 37
  • 59
1
using(TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew)){

    try{
        //Do something;

        scope.Complete();  //denotes the transaction completed successful.
    }
    catch(TransactionAbortedException ex)
    {

        //scope.Complete(); is never called, the transaction rolls back automatically.
    }
    catch(ApplicationException ex)
    {

    }
}
bleepzter
  • 9,607
  • 11
  • 41
  • 64
0

If you are on SQL server, you can use DBCC OPENTRAN

http://msdn.microsoft.com/en-us/library/ms182792.aspx

Raj More
  • 47,048
  • 33
  • 131
  • 198