我们在理解如何最好地使用 NHibernate 时遇到了一些问题。我们通常拥有相对大量(就表数量而言)的 SQL Server 数据库,而不是一个包含大量对象的数据库。
我们正在研究处理多个会话工厂的各种选项,并且可能已经控制住了这一点。但是,我们不确定如何将所有调用包装在单个事务中。使用手动数据访问,您只需将其全部包装在 TransactionScope 中,但我们有点不愿意使用 NHibernate 这样做,因为它似乎喜欢处理自己的所有事务。
使用具有共享事务的多个数据库似乎是很多人希望使用 NHibernate 做的事情。
我们是不是完全找错了树?
您可以放心使用TransactionScope
。但你也必须打开 NHibernate 事务。
Example:
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();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)