投稿更新:私は "ExecuteNonQuery"コマンドでこの問題を追跡しました。これは、更新中に失敗したり、挿入中にハングしたりするものです。プレーンなADO.NETとそのトランザクションを使った簡単な例を試してみると、完璧に動作します。また、...それは私のローカル家庭のコンピュータ接続Oracle Express版で素晴らしい作品。もう一度サーバーの設定の何かを指して?? デバッグ中にNHibernateコードにステップインするのは良いことですが、これまでソースを再構築してdllファイルとpdbファイルを使用していても、まだこれを設定することはできません。誰もこれを前にすることができましたか?NHibernateトランザクションがOracleの挿入と更新で失敗する
私は今これについて私の頭を掻いてきました。私は数日間、NHibernateとOracle 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構成の問題(挿入/更新トランザクションのブロック)か、アプリケーション・レベルで何か他のものを構成する必要がありますか?
ここで誰かが私を助けたり、発生する可能性のある問題についてもっと明るく説明できますか?
ありがとうございます。