阅读文章

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

[日期:2008-04-15] 来源:  作者: [字体: ]

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


阅读:
录入:blue1000

评论 】 【 推荐 】 【 打印
上一篇:AjaxToolKit-- 页面间跳转引发Exception
下一篇:项目经理如何参与任务管理
相关文章      
本文评论
发表评论


点评: 字数
姓名:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款