c# - NHibernate 具有多个数据库和事务

标签 c# nhibernate transactions transactionscope

我们在理解如何最好地使用 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/

相关文章:

python - Django:如何在事务中包装批量更新/插入操作?

c# - 在字符串中搜索特定格式的值

c# - 使 LINQ 查询更好

c# - 为 mac 制作一个自包含的可执行文件

NHibernate 2nd Level Cache - Membase MemCache - 多 session 工厂

c# - 在一个表中映射 On-To-Many 时出现异常。在类 Y 中找不到属性或字段 X

c# - nHibernate与SQLite格式的日期

c# - 我不太明白 MySql 连接是什么样的

java - Hibernate:saveOrUpdateAll 和事务

java - 为什么从 XAResource 抛出 XAException 仍然不允许事务提交成功?