如何检查dotnet事务是否回滚?
-
10-10-2019 - |
题
如何检查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
不隶属于 StackOverflow