sql >> Databasteknik >  >> RDS >> Oracle

NHibernate TransactionScope-problem med Oracle 11g

Problemet med att endast använda transaktionsomfånget beskrivs här:NHibernate FlushMode Auto Spolar inte innan Sök

Det verkar som att nhibernate (v3.1 med orakeldialekt och 11g db w/opd.net v2.112.1.2) kräver sina egna transaktioner för att undvika spolningsproblemet men jag har inte lyckats få transaktionsomfånget att fungera med nhibernate transaktioner.

Jag verkar inte få det att fungera :(detta kan vara ett fel i nhibernate eller odp.net, inte säker...

hittade samma problem här:NHibernate 3.0:TransactionScope och Auto -Spolning

FIXAT:hittade en lösning! genom att sätta "enlist=dynamic;" i min oracle-anslutningssträng, var problemet löst. Jag har kunnat använda både nhibernate-transaktionen (för att åtgärda flush-problemet) och transaktionsomfånget så här:

        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();
        }

Jag kontrollerade mina loggfiler och hittade detta:2011-06-27 14:03:59,852 [10] DEBUG NHibernate.Impl.AbstractSessionImpl - inkluderad i DTC-transaktion:Serialiserbar

innan någon SQL kördes på anslutningen. Jag kommer att enhetstesta för att bekräfta korrekt utförande. Jag är inte säker på vad serialiserbart säger mig dock



  1. Implementering av date_sub() funktion med intervall med jOOQ

  2. Hur lägger man till ett variabelt antal timmar till ett datum i PostgreSQL?

  3. Gå med på en CTE i SQLAlchemy

  4. Mysql/Php - Aktuellt datum och tid