Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Masalah NHibernate TransactionScope dengan Oracle 11g

Masalah dengan hanya menggunakan cakupan transaksi diuraikan di sini:NHibernate FlushMode Auto Not Flushing Sebelum Menemukan

Tampaknya nhibernate (v3.1 dengan dialek Oracle dan 11g db w/opd.net v2.112.1.2) memerlukan transaksinya sendiri untuk menghindari masalah pembilasan, tetapi saya belum bisa membuat ruang lingkup transaksi berfungsi dengan nhibernate transaksi.

Sepertinya saya tidak bisa membuatnya bekerja :( ini mungkin cacat di nhibernate atau odp.net, tidak yakin...

menemukan masalah yang sama di sini:NHibernate 3.0:TransactionScope dan Auto -Pembilasan

TETAP:menemukan solusi! dengan meletakkan "daftar=dinamis;" ke dalam string koneksi Oracle saya, masalahnya telah teratasi. Saya telah dapat menggunakan transaksi nhibernate (untuk memperbaiki masalah flush) dan ruang lingkup transaksi seperti:

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

Saya memeriksa file log saya dan menemukan ini:2011-06-27 14:03:59,852 [10] DEBUG NHibernate.Impl.AbstractSessionImpl - terdaftar dalam transaksi DTC:Serializable

sebelum SQL dijalankan pada koneksi. Saya akan menguji unit untuk mengonfirmasi eksekusi yang tepat. Saya tidak terlalu yakin apa yang dikatakan serializable kepada saya



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gunakan v('APP_USER') sebagai nilai default untuk kolom di Oracle Apex

  2. Hitung nilai berbeda untuk setiap kolom satu per satu

  3. ORA-06502:PL/SQL:kesalahan numerik atau nilai:buffer string karakter terlalu kecil

  4. Prosedur untuk menghapus hanya jika database lebih tinggi dari sysdate

  5. PLSQL menghasilkan bilangan bulat acak