Domanda

Come controllo Posso se una transazione dotnet è chiusa o no?

È stato utile?

Soluzione

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)
    {

    }
}

Altri suggerimenti

Il titolo chiede una cosa e la tua domanda chiede ad un altro. così, sto andando con il vostro titolo.

Se volete sapere se la transazione viene annullata o un set di rollback solo, è possibile controllare

transaction.WasRolledBack // true if transaction is rolled back

Qui, transaction è un'istanza di ITransaction

Modifica (sulla base di tuo commento) :

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;
    }
  }
}

Ora, è possibile controllare il flag isRolledBack per vedere se la transazione viene annullata

Se siete su SQL Server, è possibile utilizzare DBCC OPENTRAN

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top