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

NHibernate TransactionScope-problem med Oracle 11g

Problemet med kun at bruge transaktionsomfanget er beskrevet her:NHibernate FlushMode Auto Skyller ikke før Find

Det ser ud til, at nhibernate (v3.1 med orakeldialekt og 11g db w/opd.net v2.112.1.2) kræver dets egne transaktioner for at undgå skylningsproblemet, men jeg har ikke været i stand til at få transaktionsomfanget til at fungere med nhibernate transaktioner.

Jeg kan tilsyneladende ikke få det til at virke :(dette kan være en defekt i nhibernate eller odp.net, ved ikke...

fandt samme problem her:NHibernate 3.0:TransactionScope og Auto -Skylning

FIKSET:fundet en løsning! ved at sætte "enlist=dynamic;" ind i min oracle-forbindelsesstreng, blev problemet løst. Jeg har været i stand til at bruge både nhibernate-transaktionen (for at løse flush-problemet) og transaktionsomfanget som sådan:

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

Jeg tjekkede mine logfiler og fandt denne:2011-06-27 14:03:59,852 [10] DEBUG NHibernate.Impl.AbstractSessionImpl - indrulleret i DTC-transaktion:Serialiserbar

før nogen SQL blev udført på forbindelsen. Jeg vil enhedsteste for at bekræfte korrekt udførelse. Jeg er dog ikke så sikker på, hvad serializable fortæller mig dog



  1. I SQL / MySQL, hvad er forskellen mellem ON og WHERE i en join-sætning?

  2. MySQL:Overførsel af procedureparametre til EXECUTE USING-sætning

  3. MySQL- Er det muligt at tage backup af mySQL-databasen inden for en periode?

  4. Konverter objekt, der indeholder gentagne felter, til JSON