NHibernate具有多个数据库和事务

时间:2010-06-11 16:03:22

标签: c# nhibernate transactions transactionscope

我们在理解如何最好地使用NHibernate方面遇到了一些问题。我们通常有相对较大的数量(就表数而言)SQL Server数据库而不是一个包含大量对象的数据库。

我们正在研究处理多个会话工厂的各种选项,并且可能已将其控制在内。但是,我们不确定如何在单个事务中包装所有调用。使用手动数据访问,您只需将其全部包装在TransactionScope中,但我们有点不愿意使用NHibernate,因为它似乎喜欢处理所有自己的事务。

使用具有共享事务的多个数据库似乎是很多人想要用NHibernate做的事情。

我们只是完全吠叫错误的树吗?

1 个答案:

答案 0 :(得分:3)

您可以安全地使用TransactionScope。但是你也必须打开NHibernate事务。

示例:

using (var ts = new TransactionScope())
using (var session1 = sessionFactory1.OpenSession())
using (var tx1 = session1.BeginTransaction())
using (var session2 = sessionFactory2.OpenSession())
using (var tx2 = session2.BeginTransaction())
{
    //Do work...
    tx1.Commit();
    tx2.Commit();
    ts.Complete();
}