我刚开始考虑在我的一个应用程序中使用NHibernate的二级缓存。我可能会使用NHibernate.Caches.SysCache.SysCacheProvider
,它依赖于ASP.net cache。
启用缓存不是问题,但我想知道如何管理缓存,例如以编程方式从缓存中删除某些实体等。
我的应用程序类似于图像数据库。用户通过后端上传图像,并可以通过访问/ImageDb/Show?userId=someUserId
在前端查看它。
数据不经常更改。如果更改,用户不会介意在后端看到一个名为“清除我的缓存”的按钮,该按钮会从缓存中删除此用户的缓存对象。
我在网上找到了一个解决方案,可以删除nhibernate二级缓存中的所有缓存对象。但对于我来说有点太过粗暴了......我不想因为一个用户尝试清除自己数据的缓存而清除数十个用户的整个缓存。
所以我想做的基本上是:以C#有选择地从nhibernate的二级缓存中删除缓存的数据库对象。
这可行吗?我想这也取决于缓存提供程序。如果使用ASP.net缓存提供程序无法完成此操作,我可以考虑其他内置/开源建议。