即使在停止后,ADO .NET事务范围也会锁定事务

时间:2017-03-23 21:19:45

标签: c# sql-server transactions ado.net transactionscope

我在Web API应用程序中实现了事务范围。当我必须全部提交或全部回滚时,它工作正常。但有时在调试时,如果我在事务完成之前停止服务,那么事务就会被锁定。该表仍显示为已锁定,即使在关闭Visual Studio后,该特定会话仍保留在数据库中。这种情况有时发生,而且部分事务没有得到回滚。我还为transactionscope设置了超时。问题仍在发生。无论如何在服务停止之后立即中止表操作?

1 个答案:

答案 0 :(得分:0)

您需要使用TransactionScope吗?如果没有,您可以查看使用绑定到连接的SqlTransaction

<强> Details

  

如果客户端的网络连接到数据库的实例   引擎坏了,连接的任何未完成的事务都是   当网络通知休息实例时回滚。如果   客户端应用程序失败或客户端计算机出现故障或是   重启,这也打破了连接,和实例   数据库引擎回滚任何未完成的连接   网络通知它休息。如果客户端注销了   应用程序,任何未完成的交易都会被回滚。

using (SqlConnection cn = new SqlConnection("YOUR CONNECTION")) 
{
    cn.Open();
    using (SqlTransaction tr = cn.BeginTransaction()) 
    {
        // your transactional code
        tr.Commit();
    }
}