Как проверить, что транзакция Dotnet откатывается? - PullRequest
4 голосов
/ 16 декабря 2010

Как я могу проверить, закрыта ли транзакция dotnet или нет?

Ответы [ 3 ]

3 голосов
/ 16 декабря 2010

Ваш заголовок задает одно, а ваш вопрос - другое.Итак, я иду с вашим названием.

Если вы хотите знать, откат транзакции или установлен только на откат, вы можете проверить

transaction.WasRolledBack // true if transaction is rolled back

Здесь transactionэкземпляр ITransaction

Edit (на основе вашего комментария) :

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

Теперь вы можете проверить флаг isRolledBack, чтобы убедиться, что транзакция отмененаназад

1 голос
/ 16 декабря 2010
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)
    {

    }
}
0 голосов
/ 16 декабря 2010

Если вы находитесь на сервере SQL, вы можете использовать DBCC OPENTRAN

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...