Oracle
 sql >> Database >  >> RDS >> Oracle

Problema di NHibernate TransactionScope con Oracle 11g

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