【发布时间】:2009-06-30 12:52:42
【问题描述】:
我正在对多个数据库执行数据更改,并且我想实现一个涵盖所有更改的事务。
这是我目前拥有的:
try
{
db[1].begintransaction();
db[1].ExecuteNonQuery();
db[2].begintransaction();
db[2].ExecuteNonQuery();
...
db[N].begintransaction();
db[N].ExecuteNonQuery();
// will execute only if no exception raised during the process
for (int a = 0; a < N; a++)
{
db[a].Commit();// what if there is an error/exception here
}
}
catch
{
for (int a = 0; a < N; a++)
{
db[a].RollBack();
}
}
问题是,如果在Commit() 期间发生异常,上述操作将严重失败(请参阅评论)。有没有更好的方法来做到这一点?
【问题讨论】:
-
注意:这不是实际代码。为了清楚起见,我对其进行了重大修改
-
嘿,我也遇到了同样的问题……我的数据库可以是 Mysql 和 Sql Server……它可以与 TransactionScope 一起使用吗?
标签: .net sql-server database transactions