Spring.Net の AbstractTransactionalDbProviderSpringContextTests クラスを拡張し、このようなことをしようとするテスト ケースを作成しました。
Step.1 MyHibernateDao.Find(id)
Step.2 Use SqlConnection API to insert some record into database.
step.1 または step.2 のどちらでも正常に実行できますが、それらを組み合わせると、step.2 は永久に (タイムアウトまで) ハングします。
次のステートメントを追加すると:
Step.1 MyHibernateDao.Find(id) //My Find method does not have [Transaction] annotation.
SessionFactory.GetCurrentSession().Flush()
SessionFactory.GetCurrentSession().Close()
Step.2 Use SqlConnection API to insert some record into database.
step.1 と step.2 の両方が正常に実行できます。もちろん、セッションは既に閉じられているため、破棄は失敗します。
テストが step.2 でハングするのはなぜですか? ある接続が別の接続が戻るのを待つ必要がある、またはテーブルロックなどを待つ必要があるという理由はありません。単に読み取られるだけです。
私はここで混乱しています、何か考えはありますか?
前もって感謝します。