Как зафиксировать две базы данных одновременно в NHibernate?

Мне нужно сохранять две базы данных зеркальными, но я не могу сделать это с зеркальным отображением SQL Server. Проект использует NHibernate 2.2 в качестве ORM.

Есть ли какой-нибудь возможный способ решить эту проблему? Например: любой плагин / расширение для NHibernate для сохранения в нескольких базах данных одновременно.

1 ответ

Решение

На Stackru есть несколько похожих вопросов. Направь это, это и это.

Вы должны создавать два SessionFactory а также ISession экземпляры, по одному для каждой базы данных. Далее вы должны использовать 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();
}
Другие вопросы по тегам