Я настраиваю кэш 2-го уровня с помощью NHibernate 3.0. Кэш 2-го уровня прекрасно работает для сущностей и коллекций, но у меня также есть некоторые сущности, которые имеют отфильтрованные коллекции .
<bag name="EntityTrans" cascade="all-delete-orphan" table="EntityTrans">
<key column="entityId" not-null="true" />
<one-to-many class="MyDomain.EntityTran, MyDomain" />
<filter name="cultureFilter" condition=":cultureCode = CultureCode" />
</bag>
NHibernate 2-го уровня кэширования не кэширует вышеупомянутую фильтрованную коллекцию . Я вижу в NHProf, что для отфильтрованных запросов коллекции отправляются в базу данных. В моем конфигурационном файле NHibernate есть следующие записи.
<class-cache class="MyDomain.EntityTran, MuDomain" region="MyRegion" usage="read-only"/>
<collection-cache collection="MyDomain.Entity.EntityTrans" region="MyRegion" usage="read-only"/>
Нужно ли добавить что-то еще для кэширования отфильтрованной коллекции?