Удаление объектов из кэша второго уровня NHibernate

Я только начал думать об использовании кэша второго уровня NHibernate в одном из моих приложений. Я бы, наверное, использовал NHibernate.Caches.SysCache.SysCacheProvider который опирается на кэш ASP.net.

Включение кеша не было проблемой, но мне интересно, как управлять кешем, например, программным способом удалять определенные объекты из кеша и т. Д.

Мое приложение - это какая-то база данных изображений. Пользователь загружает изображения через бэкэнд и может просматривать его во внешнем интерфейсе, открывая /ImageDb/Show?userId=someUserId

Данные не меняются очень часто. И если это изменится, пользователям не будет важна кнопка с именем "очистить мой кеш" в бэкэнде, которая удаляет кэшированные объекты для этого пользователя из кеша.

Я нашел решение онлайн, которое может удалить все кэшированные объекты из кэша второго уровня nhibernates. Но это слишком грубая сила для меня... Я не хочу очищать весь кеш для десятков пользователей только потому, что один пользователь пытался очистить кеш для своих собственных данных.

Итак, что я в основном хотел сделать: выборочно удалять кэшированные объекты БД из кэша второго уровня nhibernates в C#.

Это возможно? Я думаю, это также зависит от поставщика кэша. Если это невозможно с провайдером кэша ASP.net, я открыт для других предложений встроенного / открытого источника.

1 ответ

Решение

sessionFactory предоставляет нужные вам методы... из главы 19.3 справочника NHibernate:

Чтобы полностью удалить все объекты из кэша сеанса, вызовите ISession.Clear(). Для кэша второго уровня в ISessionFactory определены методы для удаления кэшированного состояния экземпляра, целого класса, экземпляра коллекции или всей роли коллекции.

sessionFactory.Evict(typeof(Cat), catId); //evict a particular Cat
sessionFactory.Evict(typeof(Cat)); //evict all Cats
sessionFactory.EvictCollection("Eg.Cat.Kittens", catId); //evict a particular collection of kittens
sessionFactory.EvictCollection("Eg.Cat.Kittens"); //evict all kitten collections
Другие вопросы по тегам