【问题标题】:TransactionScope and database connectionsTransactionScope 和数据库连接
【发布时间】:2011-02-14 20:06:14
【问题描述】:

TransactionScope 是否适用于关闭的数据库连接?

using (var transaction = new TransactionScope(TransactionScopeOption.Required))
{
    // creates a new connection, does stuff, commit trans and close
    repos1.DoSomething(); 

    // creates a new connection, does stuff, commit trans and close
    repos2.DoSomething(); 

    transaction.Complete();
}

【问题讨论】:

    标签: .net transactionscope


    【解决方案1】:

    是的,应该可以正常工作。在内部,连接应保持打开状态,直到事务完成。请记住,如果使用多个连接,即使它们连接到同一个数据库,也可能需要 DTC。

    此外,您没有提及您使用的是哪个数据库,但 MySQL 实现中存在导致此操作不起作用的错误。对于 MySQL,这是fixed in MySQL 5.1.3

    【讨论】:

      【解决方案2】:

      http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.close.aspx

      通过 System.Transactions 启动的事务通过 System.Transactions 基础结构进行控制,不受 SqlConnection.Close 的影响。

      调用 Close 仅​​意味着您的代码已完成连接。如果 ADO.NET 基础结构仍需要连接(完成事务或连接池),则连接保持打开状态。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-26
        • 2012-06-28
        • 1970-01-01
        • 1970-01-01
        • 2021-07-16
        • 1970-01-01
        • 2010-10-01
        • 1970-01-01
        相关资源
        最近更新 更多