업데이트 : "ExecuteNonQuery"명령으로 문제를 추적했습니다. 그것이 업데이트 도중 실패하거나 삽입 중에 중단되는 것입니다. 일반 ADO.NET과 트랜잭션을 사용하여 간단한 예제를 사용하면 완벽하게 작동합니다. 또한 ... 내 로컬 가정용 컴퓨터 연결 Oracle Express 버전에서 잘 작동합니다. 어떤 종류의 서버 설정에서 다시 가리키고 ?? 디버깅하는 동안 NHibernate 코드를 한 단계 씩 들어가는 것이 좋겠지 만 지금까지는 소스를 다시 작성하고 해당 DLL 및 PDB 파일을 사용하더라도 여전히이 기능을 설정할 수 없습니다. 누구든지 전에 이것을 할 수 있었습니까?오라클의 삽입과 업데이트로 NHibernate 트랜잭션이 실패합니다
나는 잠시 동안 내 머리를 긁적 봤습니다. 지금 NHibernate와 오라클 10g 데이타베이스로 며칠 동안 개발 해왔고, 지금까지는 select 문을 사용하여 매핑 작업에 모두 잘 작동했습니다.
이제 첫 번째 삽입 (저장) 및 업데이트 문을 구현하기 시작했지만 테스트가 모두 실패합니다. 모두 transaction.commit() 부분에서 실패합니다.
INSERT (저장)을 수행하면 코드는 transaction.commit()에 도달하지만 "stucked"됩니다. 테스트는 계속 진행하지 않고 계속 실행됩니다. UPDATE을 수행 할 때 이 시험의 출력
NHibernate: select hibernate_sequence.nextval from dual
NHibernate: INSERT INTO MOB_PL_MAPPING_TEST (DES, TEST_ID) VALUES (:p0, :p1);:p0 = 'This is a test!', :p1 = 161
(테스트 실행을 계속 참고) 상기 transaction.commit()는 실패하고 난 다음 오류 스택 나타날
NHibernate: SELECT test0_.TEST_ID as TEST1_10_0_, test0_.DES as DES10_0_ FROM MOB_PL_MAPPING_TEST test0_ WHERE test0_.TEST_ID=:p0;:p0 = 61
NHibernate: UPDATE MOB_PL_MAPPING_TEST SET DES = :p0 WHERE TEST_ID = :p1;:p0 = 'Changed!', :p1 = 61
TestCase 'Data.Tests.Test_Update_on_Test_Table'
failed: NHibernate.TransactionException : Rollback failed with SQL Exception
----> System.InvalidOperationException : This OracleTransaction has completed; it is no longer usable.
c:\CSharp\NH\nhibernate\src\NHibernate\Transaction\AdoTransaction.cs(260,0): at NHibernate.Transaction.AdoTransaction.Rollback()
E:\SubVersion\Application\Src\Data\UnitOfWork\Data.UnitOfWork\GenericTransaction.cs(26,0): at Data.UOW.GenericTransaction.Rollback()
E:\SubVersion\Application\Src\Data\UnitOfWork\Data.UnitOfWork\UnitOfWorkImplementor.cs(49,0): at Data.UOW.UnitOfWorkImplementor.TransactionFlush(IsolationLevel isolationLevel)
E:\SubVersion\Application\Src\Data\UnitOfWork\Data.UnitOfWork\UnitOfWorkImplementor.cs(36,0): at Data.UOW.UnitOfWorkImplementor.TransactionFlush()
E:\SubVersion\Application\Src\Data\Data.Tests\Repositories\LoyaltyRepositoryTests.cs(159,0): at Data.Tests.Test_Update_on_Test_Table()
--InvalidOperationException
at System.Data.OracleClient.OracleTransaction.AssertNotCompleted()
at System.Data.OracleClient.OracleTransaction.Rollback()
c:\CSharp\NH\nhibernate\src\NHibernate\Transaction\AdoTransaction.cs(246,0): at NHibernate.Transaction.AdoTransaction.Rollback()
을
나는 오라클에 알려지지 않았지만, 트랜잭션을 설정하면 문제가 발생하는 것 같습니다. select 문 (GET)에 대해 동일한 코드 (트랜잭션 사용)가 올바르게 작동하지만. oracle 구성 문제 (삽입/업데이트 트랜잭션 차단)이거나 응용 프로그램 수준에서 다른 구성을해야합니까?
아무도 나를 도와 줄 수 없거나 발생할 수있는 문제에 대해 더 많은 도움을 줄 수 있습니까?
미리 감사드립니다.