多个数据库事务

yuemb369 2010-09-26 05:31:44
我想实现的功能:我想处理多个数据库的表,并保证事务(不采用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()
...全文
364 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuemb369 2010-09-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 dobzhansky 的回复:]
简单的情况下
可以自己来管理各个连接上的事务

ado.net 事务是基于连接的(同一个连接参数创建的2个 connection, 也是分布式事务),
控制各个连接的事务一致性就好.

但是意外情况太多了.

平衡一下吧.
[/Quote]
这位仁兄的表达,总让人摸不着头脑,或许放出点简单的代码表述会清晰一些
yuemb369 2010-09-27
  • 打赏
  • 举报
回复
用TransactionScope是可以的,仔细看一下MSDN对他的介绍;要用到MSDTC;可能会遇到问题;
http://zhidao.baidu.com/question/27863039.html
wind_199 2010-09-26
  • 打赏
  • 举报
回复
简单的情况下
可以自己来管理各个连接上的事务

ado.net 事务是基于连接的(同一个连接参数创建的2个 connection, 也是分布式事务),
控制各个连接的事务一致性就好.

但是意外情况太多了.

平衡一下吧.
Dobzhansky 2010-09-26
  • 打赏
  • 举报
回复
简单的情况下
可以自己来管理各个连接上的事务

ado.net 事务是基于连接的(同一个连接参数创建的2个 connection, 也是分布式事务),
控制各个连接的事务一致性就好.

但是意外情况太多了.

平衡一下吧.
yuemb369 2010-09-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dobzhansky 的回复:]
用 .net 类库里头的 transaction scope 可以办到
不过这要求windows组件服务提供支持

并且 用到的 ado.net provider 也有相应支持,
比如 oracle 需要部署 oramts

这样提升的事务管理才是企业级方案, 仍旧是 com+.
[/Quote]
com+我知道是可以办到,但我这儿不想部署Com+环境
wuyq11 2010-09-26
  • 打赏
  • 举报
回复
using(TransactionScope scope = new TransactionScope())
{
//方法1
//方法2:
scope.Complete();
}

yuemb369 2010-09-26
  • 打赏
  • 举报
回复
有没有人给出个明确答复:
行 OR 不行
yuemb369 2010-09-26
  • 打赏
  • 举报
回复

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();
Dobzhansky 2010-09-26
  • 打赏
  • 举报
回复
用 .net 类库里头的 transaction scope 可以办到
不过这要求windows组件服务提供支持

并且 用到的 ado.net provider 也有相应支持,
比如 oracle 需要部署 oramts

这样提升的事务管理才是企业级方案, 仍旧是 com+.
yuemb369 2010-09-26
  • 打赏
  • 举报
回复
不是事务嵌套,
声明一个事务, 第一步操作DB1,然后再操作DB2,最后提交
kensouterry 2010-09-26
  • 打赏
  • 举报
回复
你用两个连接conn1和conn2建立两个事务用来共同提交不可以吗?
lgz_asp_net 2010-09-26
  • 打赏
  • 举报
回复
事务嵌套?

110,557

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧