2010-12-15 8 views
0

私は、永続性のためにFluent Nhibernate 1.1とNHibernate 3.0を使用するWindowsフォームスマートクライアントを開発しています。 レガシーコードのため、私は選択肢がありませんでしたが、すべてのクライアントレベルのCRUD操作を処理する単一のセッションを作成しました。 これは、Nhibernateセッションを古く残す傾向があります。だから私はクエリの結果がキャッシュされていないという印象を受けていたので、この古いデータの問題を解消するためにQueryOverを使用することを決定しました。 NHibernateから返された結果がキャッシュされているように見えるため、これは起こっていないようです。NHibernate QueryOverキャッシングの問題

私の質問は、結果が返されたときにQueryOverのデフォルトの実装で何らかのキャッシュを使用していますか?

答えて

2

NHibernateはアイデンティティマップを使用しています。これは、DBからどのようにエンティティを取得しても、同じ行(セッション内)で常に同じオブジェクトを取得することを保証します。

winformsアプリケーションで1つのセッションを使用するのは間違いです。あなたが見ている問題はちょうど氷山の先端です。

winformsアプリケーションでのセッション処理を改善するには、Effectusをチェックしてください。