调用Transaction.Current时出现InvalidOperationException

时间:2018-05-01 20:23:54

标签: c# .net transactions transactionscope system.transactions

我的DatabaseClient类中的代码通过检查ThreadStatic属性Transaction.Current来检查是否存在活动的TransactionScope:

if (Transaction.Current == null)
{
    // open a new connection and do things
}

我有代码消耗这个类,它创建一个TransactionScope,执行两个数据库操作,然后完成它。然后,应用程序继续进行进一步的数据库工作。但现在当它调用上面的代码时,我得到一个例外:

System.InvalidOperationException: The current TransactionScope is already complete.

我需要做什么才能“重置”当前的交易,以便我可以安全地再次检查Transaction.Current?

1 个答案:

答案 0 :(得分:0)

当事务已回滚或已提交时,无法重复使用。创建一个新的。

这里有一些示例代码: https://docs.microsoft.com/en-gb/dotnet/api/system.transactions.transactionscope?view=netframework-4.7