如何在 NHibernate 中同时提交两个数据库?

mar*_*rez 2 c# nhibernate

我需要保持两个数据库的镜像,但我不能用 SQL Server 镜像来做到这一点。该项目使用 NHibernate 2.2 作为 ORM。

有没有办法解决这个问题?例如:NHibernate 的任何插件/扩展可以同时保存到多个数据库。

Ami*_*shi 5

StackOverflow 上有多个类似的问题。参考这个这个这个

您必须创建两个SessionFactoryandISession实例,每个数据库一个。此外,您应该TransactionScope针对其中的多个数据库使用和包装您的数据库操作。

以下代码是从“ Ricardo Peres ”对上述问题之一的回答中复制的:

using (TransactionScope tx = new TransactionScope())
{
  using (ISession session1 = ...)
  using (ITransaction tx1 = session.BeginTransaction())
  {
    ...do work with session
    tx1.Commit();
  }

  using (ISession session2 = ...)
  using (ITransaction tx2 = session.BeginTransaction())
  {
    ...do work with session
    tx2.Commit();
  }

  tx.Complete();
}
Run Code Online (Sandbox Code Playgroud)