我在Web API应用程序中实现了事务范围。当我必须全部提交或全部回滚时,它工作正常。但有时在调试时,如果我在事务完成之前停止服务,那么事务就会被锁定。该表仍显示为已锁定,即使在关闭Visual Studio后,该特定会话仍保留在数据库中。这种情况有时发生,而且部分事务没有得到回滚。我还为transactionscope设置了超时。问题仍在发生。无论如何在服务停止之后立即中止表操作?
答案 0 :(得分:0)
您需要使用TransactionScope吗?如果没有,您可以查看使用绑定到连接的SqlTransaction。
<强> Details 强>
如果客户端的网络连接到数据库的实例 引擎坏了,连接的任何未完成的事务都是 当网络通知休息实例时回滚。如果 客户端应用程序失败或客户端计算机出现故障或是 重启,这也打破了连接,和实例 数据库引擎回滚任何未完成的连接 网络通知它休息。如果客户端注销了 应用程序,任何未完成的交易都会被回滚。
using (SqlConnection cn = new SqlConnection("YOUR CONNECTION"))
{
cn.Open();
using (SqlTransaction tr = cn.BeginTransaction())
{
// your transactional code
tr.Commit();
}
}