В ваших файлах сопоставления вам нужно будет включить свойство:
<class name="ClassName" table="Table">
<cache usage="read-write" />
<!-- SNIP -->
</class>
Опции: чтение-запись (чтение с фиксацией изоляции), нестрогое чтение-запись (объекты, которые пишутся редко, повышают производительностьно повышается вероятность устаревших данных) или только для чтения (данные, которые никогда не меняются).
Затем в вашей веб-конфигурации (или приложении) вам нужен раздел для настройки memcached:
<configuration>
<configSections>
<!-- SNIP -->
<section name="memcache" type="NHibernate.Caches.MemCache.MemCacheSectionHandler,NHibernate.Caches.MemCache" />
</configSections>
<memcache>
<memcached host="127.0.0.1" port="11211" weight="2" />
</memcache>
<!-- SNIP -->
</configuration>
Наконец, в вашей фабричной конфигурации сеанса обязательно используйте:
<hibernate-configuration>
<session-factory>
<!-- SNIP -->
<property name="expiration">300</property> <!--memcache uses seconds -->
<property name="cache.provider_class">NHibernate.Caches.MemCache.MemCacheProvider,NHibernate.Caches.MemCache</property>
<property name="cache.use_second_level_cache">true</property>
<property name="cache.use_query_cache">false</property> <!-- true if you want to cache query results -->
</session-factory>
</hibernate-configuration>
Конечно, вам нужно скачать и ссылаться на dll из соответствующей версии NHibernate.Caches , чтобы получить правильного поставщика кеша.Memcached берет зависимость от ICSharpCode.SharpZipLib и Memcached.ClientLibrary (s / b включен в загрузку)
Если вы используете свободный NHibernate, в цепочке установки есть метод .Cache дляфабрика сеансов, которую вы можете использовать, хотя некоторые свойства необходимо установить вручную с помощью вызова .ExposeConfiguration.