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

时间:2008-04-15 09:33:44  来源:  作者:  【背景色 杏仁黄 秋叶褐 胭脂红 芥末绿 天蓝 雪青 灰 银河白

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

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

  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();
   }
   }
  
  
  }

  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。


文章评论

共有 0位网翼网友发表了评论 查看完整内容