如果在使用块末尾未调用 TransactionScope.Complete,Transaction 会发生什么情况

Bha*_*a K 5 c# sql-server ado.net transactionscope

我正在使用 SQL Server 2012,并且在使用块内有多个到同一数据库的 SQL 连接TransactionScope。但是,如果第一个更新 SQL 操作没有产生所需的输出,那么我将跳过对 SQL 操作的下一个调用,并且还会TransactionScope.Complete在块末尾调用未调用的调用Using

AAA*_*ddd 4

您需要的大部分信息都在此处详细列出完成交易范围

当您的应用程序完成了它想要在事务中执行的所有工作时,您应该仅调用一次 Complete 方法来通知事务管理器可以提交事务。将 Complete 调用作为 using 块中的最后一个语句是非常好的做法。

未能调用此方法将中止事务,因为事务管理器将此解释为系统故障,或者相当于在事务范围内引发的异常。但是,调用此方法并不能保证事务将被提交。这只是通知交易经理您的状态的一种方式。调用 Complete 方法后,您无法再使用 Current 属性访问环境事务,尝试这样做将导致引发异常。