.net TransactionScope异常

Pos*_*sto 2 .net c# transactions

我的代码是这样的

try
{
    using (TransactionScope iScope = new TransactionScope())
    {
        try
        {
            isInsertSuccess = InsertProfile(account);
        }
        catch (Exception ex)
        {
            throw;
        }

        if (isInsertSuccess)
        {
            iScope.Complete();
            retValue = true;
        }
    }
}
catch (TransactionAbortedException tax)
{
    throw;
}
catch (Exception ex)
{
    throw;
}
Run Code Online (Sandbox Code Playgroud)

现在发生的是,即使我的值为TRUE,也会随机发生TransactionAbortedException异常,但是在DB中插入/更新数据.

知道出了什么问题吗?

Jef*_*nal 11

正如TransactionAbortedException文件所说,

当尝试提交事务并且事务中止时,也会抛出此异常.

这就是为什么即使在调用之后你也会看到异常Transaction.Complete:该Complete方法与以下内容不同Commit:

调用此方法[ TransactionScope.Complete]不保证事务的提交.它只是向交易经理通知您的状态的一种方式

在退出using语句之前,不会提交事务:CommittableTransaction.Commit有关详细信息,请参阅文档.此时,参与交易的任何行动都可以投票中止交易,您将得到一个TransactionAbortedException.

要调试底层问题,您需要分析异常详细信息和堆栈跟踪.正如Mark在评论中指出的那样,它可能是由死锁或与其他数据库进程的其他交互引起的.