NHibernate с несколькими базами данных и транзакциями - PullRequest
2 голосов
/ 11 июня 2010

У нас возникли проблемы с пониманием того, как лучше всего использовать NHibernate.Обычно у нас относительно большое количество довольно небольших (с точки зрения количества таблиц) баз данных SQL Server, а не одной базы данных с большим количеством объектов.

Мы рассматриваем различные варианты обработки нескольких фабрик сессий и, возможно,держать это под контролем.Однако мы не уверены, как бы мы обернули все вызовы в одну транзакцию.Используя свернутый вручную доступ к данным, вы бы просто обернули все это в TransactionScope, но мы немного неохотно делаем это с NHibernate, поскольку, похоже, ему нравится обрабатывать все его собственные транзакции.Похоже на то, что многие люди хотели бы сделать с NHibernate.

Мы просто полностью лаем не то дерево?

1 Ответ

3 голосов
/ 11 июня 2010

Вы можете безопасно использовать 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();
}
...