データベースが Nhibernate/Cache の外で変更されたかどうかを 2 番目のレベルのキャッシュが知る方法がないことがわかったので、すべてのテーブルに新しい列 'Timestamp' を作成しました。
私のクエリでは、最初に Session.Cachemode(CacheMode.Ignore) を使用してデータベースのタイムスタンプを選択し、データベースのタイムスタンプを取得し、キャッシュからの結果と比較します。タイムスタンプが異なる場合は、そのクエリのキャッシュを無効にして、もう一度実行します。
SysCache については、WPF デスクトップ アプリで「機能する」ことを知っていても、System.Web.Cache を使用することに熱心ではありませんでした。私のアプリケーションでは、クライアント プロファイルの代わりに完全な .Net Framework が必要になるからです。私は検索を行いましたが、幸いなことに、誰かが (System.Runtime.Caching) を実装する Nhiberate キャッシュ プロバイダーを作成しました。魔女は ASP.Net コンポーネントではありません。興味のある方は、 https ://github.com/Leftyx/nhcontrib/tree/master/src/NHibernate.Caches/MemoryCache でソースを見つけることができます
。