我的程序访问2个数据库并执行一些数据库工作。我想在一个事务中执行这些工作,如果其中一个得到任何错误,也不应该提交另一个错误。
这就是我现在所处的程序的简单代码。
using (var transactionScope = new TransactionScope(TransactionScopeOption.Required, transactionOptions))
{
using (var session1 = NHibernateHelper.OpenSession1())
{
using (var session2 = NHibernateHelper.OpenSession2())
{
using (var trnx1 = session1.BeginTransaction())
{
using (var trnx2 = session2.BeginTransaction())
{
session2.Save(bla bla);
session1.Update(bla bla);
trnx2.Commit();
trnx1.Commit();
}
}
}
}
transactionScope.Complete();
}
我希望如果trnx1中出现错误,trnx2应该回滚。 数据库位于同一服务器中。