В зависимости от того, что вы делаете, по умолчанию я думаю, что кэш L2 - это только элементы кэширования, вызываемые по идентификатору, EG session.Get или session.Load.Для кеширования запросов с использованием ICriteria и т. Д. Вам нужно конкретно указать, что вы хотите, чтобы этот запрос кэшировался.EG
ICriteria criteria = Session.CreateCriteria( ).SetCacheable( true ).SetCacheRegion( "SomeNameHere" );
Некоторое имя здесь - ваша область кэша.Короче говоря, это группирует элементы кеша. Сохраняя это действительно кратким, я обычно просто ставлю имя класса / сущности, например, «Персона» или «Компания».
При настройке карт классов вы всегда можете захотетьиграть со свойством Cache из базового класса.Это что-то вроде
Cache.ReadWrite( ).IncludeAll( ) ;
Я лично обнаружил, что без этого при выполнении запроса он кэшировал идентификаторы каждого элемента в наборе результатов, но не сами элементы, так что это могло бы быстро выполнить тяжелый запрос, нозатем он должен попасть в базу данных для каждого элемента, поэтому, если у вас действительно простой запрос, возвращающий 100 элементов, ваша база данных может получить 100 раз.Я обнаружил, что добавление вышеуказанного в мой класс отображения решило эту проблему.
Надеюсь, это поможет.