Castle activerecordを使い始めたのと同じ時期にnhibernateを使い始めたので、時々それらの混乱した質問があります
次のコードが実行されたときに、activerecord(またはnhibernate)が接続を閉じるのはいつかと思っていました。
Dim entity = TABLE_Y.TryFind(id)
if not entity is nothing then
'long running process here
response.redirect("...")
end if
この長時間実行されているプロセスが完了するまでに1時間以上かかり、コードが別のページにリダイレクトされるたびに、接続が失われたことを通知するORA-03135(接続が失われた連絡先)が表示されるため、この別のページには次のアクティブなものがあります。レコードクエリ:
Dim entity = TABLE_X.FindAll(Order.Desc(...), _
Expression.Eq(...) And _
Expression.Eq(...)).FirstOrDefault
その後、ora-03135を返します
だから私は、長時間実行されるプロセスの前に閉じなかったactiverecordからの接続ができないかどうかを考えていました
この長時間実行されるプロセスは、文字通り、アプリケーションによって開始される別のプロセスであり、終了するのを待ってから別のページにリダイレクトするため、他のプロセスがアクティブなレコードを使用している場合でも、同じ接続文字列などは使用されません。
まったく別のテーブルで新しいクエリを開始しているので面白いですが、activerecordはタイムアウトした既存の接続を再利用しようとしていますか?「Pooling=False」と「ValidateConnection=true」を追加しようとしましたがうまくいきませんでした
前もって感謝します