经验:使用.net 2.0中的TransactionScope碰到的问题

概述:不能在同一个TransactionScope中打开多个连接对象

TransactionScope真的是很方便的,具体的使用也很简单,MSDN上有详细描述。不过我在使用过程中发现了一个问题,那就是无法在同一个TransactionScope中打开多个连接对象。示例代码如下,示例中是连接到同一实例的同一数据库,但连接到不同实例的不同数据库也是同样的结果。

具体原因还需具体分析,我碰到的情况不一定代表就是正确的情况,还请大家批评。

[Test]
public void TestTransactionScope()
{
    using (TransactionScope ts = new TransactionScope())
    {
        string cnstr = @"Data Source=cs1\sqlexpress;Database=fugao_dev;User ID=sa;Password=123;";
        SqlConnection cn1 = new SqlConnection(cnstr);
        cn1.Open();

        using (TransactionScope ts2 = new TransactionScope())
        {
            SqlConnection cn2 = new SqlConnection(cnstr);
            cn2.Open();
        }
    }

}

[Test]
public void TestTransactionScopeA()
{
    using (TransactionScope ts = new TransactionScope())
    {
        string cnstr = @"Data Source=cs1\sqlexpress;Database=fugao_dev;User ID=sa;Password=123;";
        SqlConnection cn1 = new SqlConnection(cnstr);
        cn1.Open();


        SqlConnection cn2 = new SqlConnection(cnstr);
        cn2.Open();
    }

}

以上测试都抛出了异常,并且运行时间很长,象死机一下
System.Transactions.TransactionManagerCommunicationException : 与基础事务管理器的通信失败。
  ----> System.Runtime.InteropServices.COMException : 对 COM 组件的调用返回了错误 HRESULT E_FAIL。

相关文章:

  • 2022-02-25
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-02
  • 2021-07-06
猜你喜欢
  • 2022-12-23
  • 2021-06-06
  • 2021-08-23
  • 2021-05-31
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案