Проблема с использованием только области транзакции описана здесь: NHibernate FlushMode, автоматическая очистка перед поиском
Появляется nhibernate (v3.1 с диалектом оракула и 11 г дБ с оп..net v2.112.1.2) требует собственных транзакций, чтобы избежать проблемы с очисткой, но я не смог заставить область транзакции работать с транзакциями nhibernate.
Кажется, я не могу ее получитьна работу :( это может быть дефект в nhibernate или odp.net, не уверен ...
обнаружил такую же проблему здесь: NHibernate 3.0: TransactionScope и Auto-Flushing
ИСПРАВЛЕНО: найдено решение! Добавив «enlist = dynamic;» в мою строку соединения оракула, проблема была решена. Я смог использовать как транзакцию nhibernate (чтобы исправить проблему сброса), так и область транзакции, например, так:
ISessionFactory sessionFactory = CreateSessionFactory();
using (TransactionScope ts = new TransactionScope())
{
using (ISession session = sessionFactory.OpenSession())
using (ITransaction tx = session.BeginTransaction())
{
//do stuff here
tx.Commit();
}
ts.Complete();
}
Я проверил свои файлы журналов и нашел это: 2011-06-27 14: 03: 59,852 [10] DEBUG NHibernate.Impl.AbstractSessionImpl - зачислен в транзакцию DTC: Serializable
до того, как какой-либо SQL был выполнен в соединении.Я проведу модульное тестирование, чтобы подтвердить правильность выполнения.Я не слишком уверен, что сериализуемый говорит мне, хотя