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

经验:使用.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。

转载于:https://www.cnblogs.com/andywu/archive/2008/04/14/1152634.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值