如何检查dotnet交易是否关闭?

有帮助吗?

解决方案

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

    }
}

其他提示

您的标题问一件事,您的问题问另一件事。所以,我要拿你的标题。

如果您想知道交易是回滚还是仅设置为回滚,则可以检查

transaction.WasRolledBack // true if transaction is rolled back

这里, transaction 是iTransaction的实例

编辑(根据您的评论):

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 标志以查看交易是否回滚

如果您在SQL Server上,则可以使用 DBCC OPENTRAN

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top