私はいくつかの仕事をし、DBTransactionsを使用していくつかのストアドプロシージャを呼び出すレガシーメソッドを呼び出します。これらのレガシーメソッド呼び出しのいずれかが失敗した場合、NHibernate Transactionはロールバックする必要があります。NHiberateネストされたトランザクションのブロック
問題は、レガシーメソッドが、NHibernateトランザクションが作成しているデータベース内のデータを使用していることです。これにより、Nhibernateプロセスを待機している間、レガシーコードのSQLプロセスがロックされます。 Nhibernateプロセスは、レガシーSQLプロセスが終了するのを待っているため、デッドロックが発生します。
両方のトランザクションでReadUncommittedを使用しようとしましたが、動作しません。
NHibernate in Actionで推奨されているようにSystem.EnterpriseServicesを使用して分散トランザクションを設定しようとしましたが、どちらも機能していないようです。
ここからどこに行くのかはわかりません。
ありがとうございました。システムが現在設計されているため、私はオプション3を使いました。 NHibernateやADO Transactionsの代わりにTransactionScopeを使用しました。 TransactionScopeが終了する前にフラッシュし、トランザクションを完了します。 もう一度ご協力いただきありがとうございます。 – Adam