私は自分のアプリの1つでNHibernateの第2レベルのキャッシュを使用することを考え始めました。私はおそらくNHibernate.Caches.SysCache.SysCacheProvider
ASP.netキャッシュに依存するを使用します。
キャッシュを有効にすることは問題ではありませんでしたが、キャッシュを管理する方法、たとえば、キャッシュから特定のエンティティをプログラムで削除する方法などについて疑問に思っています。
私のアプリケーションはある種の画像データベースです。ユーザーはバックエンドを介して画像をアップロードし、アクセスしてフロントエンドで画像を表示できます/ImageDb/Show?userId=someUserId
データはあまり頻繁に変更されません。また、変更された場合、ユーザーは、このユーザーのキャッシュされたオブジェクトをキャッシュから削除するバックエンドの「キャッシュをクリア」という名前のボタンを気にする必要はありません。
nhibernatesの第2レベルのキャッシュからすべてのキャッシュされたオブジェクトを削除できるソリューションをオンラインで見つけました。しかし、それは私には少しブルートフォースです... 1人のユーザーが自分のデータのキャッシュをクリアしようとしたという理由だけで、数十人のユーザーのキャッシュ全体をクリアしたくありません。
だから私が基本的にやりたかったのは、C#のnhibernatesの第2レベルのキャッシュからキャッシュされたdbオブジェクトを選択的に削除することです。
これは可能ですか?キャッシュプロバイダーにもよると思います。これがASP.netキャッシュプロバイダーで実行できない場合、私は他の組み込み/オープンソースの提案を受け入れます。