Oracle
 sql >> база данни >  >> RDS >> Oracle

Проблем с NHibernate TransactionScope с Oracle 11g

Проблемът с използването само на обхвата на транзакцията е описан тук:NHibernate FlushMode Auto не се изтрива преди намиране

Изглежда, че nhibernate (v3.1 с диалект на oracle и 11g db w/opd.net v2.112.1.2) изисква свои собствени транзакции, за да избегне проблема с промиването, но не успях да накарам обхвата на транзакцията да работи с nhibernate транзакции.

Изглежда не мога да го накарам да работи :(това може да е дефект в nhibernate или odp.net, не съм сигурен...

намери същия проблем тук:NHibernate 3.0:TransactionScope и Auto - Зачервяване

ПОПРАВЕНО:намерено решение! като поставите "enlist=dynamic;" в моя низ за свързване на oracle, проблемът беше разрешен. Успях да използвам както транзакцията nhibernate (за отстраняване на проблема с промиването), така и обхвата на транзакцията по следния начин:

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

Проверих регистрационните си файлове и открих това:2011-06-27 14:03:59,852 [10] DEBUG NHibernate.Impl.AbstractSessionImpl - включен в DTC транзакция:Serializable

преди да бъде изпълнен SQL във връзката. Ще тествам единица, за да потвърдя правилното изпълнение. Все пак не съм много сигурен какво ми казва сериализуемото



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. съдържанието на декларацията за пакета

  2. Условен ред по клауза

  3. Едновременна обработка на актуализации в хибернация

  4. Как да обработваме изключенията to_date в оператор SELECT, за да игнорирате тези редове?

  5. Проблеми при извикване на съхранена процедура от C# с голям CLOB