Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Sự cố NHibernate TransactionScope với Oracle 11g

Vấn đề với việc chỉ sử dụng phạm vi giao dịch được nêu ở đây: NHibernate FlushMode Tự động không xả trước khi tìm thấy

Nó xuất hiện nhibernate (v3.1 với phương ngữ oracle và 11g db w / opd.net v2.112.1.2) yêu cầu các giao dịch riêng của nó để tránh sự cố tuôn ra nhưng tôi không thể làm cho phạm vi giao dịch hoạt động với nhibernate giao dịch.

Tôi dường như không thể làm cho nó hoạt động:(đây có thể là một lỗi trong nhibernate hoặc odp.net, không chắc chắn ...

tìm thấy vấn đề tương tự ở đây: NHibernate 3.0:TransactionScope và Auto -Flushing

CỐ ĐỊNH:đã tìm ra giải pháp! bằng cách đặt "tranh thủ =động;" vào chuỗi kết nối oracle của tôi, sự cố đã được giải quyết. Tôi đã có thể sử dụng cả giao dịch nhibernate (để khắc phục sự cố tuôn ra) và phạm vi giao dịch như vậy:

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

Tôi đã kiểm tra tệp nhật ký của mình và thấy điều này:2011-06-27 14:03:59,852 [10] DEBUG NHibernate.Impl.AbstractSessionImpl - tham gia giao dịch DTC:Serializable

trước khi bất kỳ SQL nào được thực thi trên kết nối. Tôi sẽ kiểm tra đơn vị để xác nhận việc thực hiện đúng. Tôi không quá chắc chắn những gì có thể nối tiếp đang nói với tôi



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kích hoạt để hiển thị thông báo bằng PL / SQL

  2. Tôi nên sử dụng những gì thay vì trình tự để tránh khoảng trống?

  3. oracle chuyển giá trị văn bản hàng thành cột

  4. Trong Oracle, liên quan đến cú pháp - làm cách nào để chuyển đổi cú pháp (+) thành JOIN thông thường hiện đại?

  5. Làm cách nào để tự động tạo danh tính cho cơ sở dữ liệu Oracle thông qua khung Entity?