我们在理解如何最好地使用 NHibernate 时遇到了一些问题。我们通常拥有相对大量(就表数量而言)的 SQL Server 数据库,而不是一个包含大量对象的数据库。
我们正在研究处理多个 session 工厂的各种选项,并且可能已经控制住了。然而,我们不确定如何将所有调用包装在单个事务中。使用手动数据访问,您只需将其全部包装在 TransactionScope 中,但我们有点不愿意使用 NHibernate 这样做,因为它似乎喜欢处理自己的所有事务。
使用具有共享事务的多个数据库似乎是很多人希望使用 NHibernate 做的事情。
我们是不是完全找错了树?
最佳答案
您可以安全地使用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();
}
关于c# - NHibernate 具有多个数据库和事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3024318/