Il problema con l'utilizzo solo dell'ambito della transazione è descritto qui:NHibernate FlushMode Auto non scarica prima di trovare
Sembra che nhibernate (v3.1 con dialetto oracle e 11g db w/opd.net v2.112.1.2) richieda le proprie transazioni per evitare il problema di svuotamento ma non sono stato in grado di far funzionare l'ambito della transazione con nhibernate transazioni.
Non riesco a farlo funzionare :(questo potrebbe essere un difetto in nhibernate o odp.net, non sono sicuro...
trovato lo stesso problema qui:NHibernate 3.0:TransactionScope e Auto -Lavaggio
RISOLTO:trovata una soluzione! inserendo "arruolare=dinamico;" nella mia stringa di connessione di Oracle, il problema è stato risolto. Sono stato in grado di utilizzare sia la transazione nhibernate (per risolvere il problema dello svuotamento) sia l'ambito della transazione in questo modo:
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();
}
Ho controllato i miei file di registro e ho trovato questo:2011-06-27 14:03:59,852 [10] DEBUG NHibernate.Impl.AbstractSessionImpl - arruolato nella transazione DTC:serializzabile
prima che qualsiasi SQL fosse eseguito sulla connessione. Farò unit test per confermare la corretta esecuzione. Tuttavia, non sono troppo sicuro di cosa mi stia dicendo serializzabile