Problem z użyciem tylko zakresu transakcji jest opisany tutaj:NHibernate FlushMode Auto nie opróżnia przed znalezieniem
Wygląda na to, że nhibernate (v3.1 z dialektem oracle i 11g db w/opd.net v2.112.1.2) wymaga własnych transakcji, aby uniknąć problemu z opróżnianiem, ale nie udało mi się uzyskać zakresu transakcji do pracy z nhibernate transakcje.
Wygląda na to, że nie mogę go uruchomić :(może to być usterka w nhibernate lub odp.net, nie jestem pewien...
znalazłem ten sam problem tutaj:NHibernate 3.0:TransactionScope i Auto -Płukanie
NAPRAWIONO:znaleziono rozwiązanie! przez umieszczenie "enlist=dynamic;" do mojego ciągu połączenia Oracle, problem został rozwiązany. Udało mi się użyć zarówno transakcji nhibernacji (aby naprawić problem z spłukiwaniem), jak i zakresu transakcji:
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();
}
Sprawdziłem pliki dziennika i znalazłem to:2011-06-27 14:03:59,852 [10] DEBUG NHibernate.Impl.AbstractSessionImpl - zarejestrowany w transakcji DTC:Serializable
przed wykonaniem jakiegokolwiek kodu SQL w połączeniu. Przeprowadzę test jednostkowy, aby potwierdzić prawidłowe wykonanie. Nie jestem jednak pewien, co mówi mi serializacja