我想实现的功能:我想处理多个数据库的表,并保证事务(不采用DB2..Table1这样的方式,因为会调用已经有的方法)
场景: 有 DB1,DB2,...多个数据库C#代码:
string strConn_DB1 = "DB1的数据库连接串";
string strConn_DB2 = "DB2的数据库连接串";SqlConnction conn = new SqlConnction(strConn_DB1);
conn.Open();
conn.BeginTransaction();
//对DB1的表进行操作//目的:对DB2的表进行操作
conn.ConnectString = strConn_DB2;   //我知道这样是错的的,只是想让大家理解我想实现的功能
//对DB2的表进行操作Transaction.Commit() 或者 Transaction.RollBack()

解决方案 »

  1.   

    你用两个连接conn1和conn2建立两个事务用来共同提交不可以吗?
      

  2.   

    不是事务嵌套,
    声明一个事务, 第一步操作DB1,然后再操作DB2,最后提交
      

  3.   

    用 .net 类库里头的 transaction scope 可以办到
    不过这要求windows组件服务提供支持并且 用到的 ado.net provider 也有相应支持,
    比如 oracle 需要部署 oramts 这样提升的事务管理才是企业级方案, 仍旧是 com+.
      

  4.   


    SqlConnction conn = new SqlConnction(strConn_DB1);
    conn.Open();
    DBTransaction trans = conn.BeginTransaction();
    //对DB1的表进行操作
    Handle_DB1(trans );  
    //目的:对DB2的表进行操作
    conn.ConnectString = strConn_DB2; //我知道这样是错的的,只是想让大家理解我想实现的功能
    //对DB2的表进行操作
    Handle_DB2(trans );
    //Handle_DB1和Handle_DB2两个方法是已有的,我不想更改他们的方法体conn.Transaction.Commit();
      

  5.   

    using(TransactionScope scope = new TransactionScope())
    {
    //方法1   
    //方法2:   
    scope.Complete();
    }  
     
      

  6.   

    com+我知道是可以办到,但我这儿不想部署Com+环境
      

  7.   

    简单的情况下
    可以自己来管理各个连接上的事务ado.net 事务是基于连接的(同一个连接参数创建的2个 connection, 也是分布式事务),
    控制各个连接的事务一致性就好.但是意外情况太多了.平衡一下吧.
      

  8.   

    简单的情况下
    可以自己来管理各个连接上的事务ado.net 事务是基于连接的(同一个连接参数创建的2个 connection, 也是分布式事务),
    控制各个连接的事务一致性就好.但是意外情况太多了.平衡一下吧.
      

  9.   

    用TransactionScope是可以的,仔细看一下MSDN对他的介绍;要用到MSDTC;可能会遇到问题;
    http://zhidao.baidu.com/question/27863039.html