Ответ 1
В ваших файлах сопоставления вам нужно будет включить свойство:
<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>
Наконец, в конфигурации сеанса factory обязательно используйте:
<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, в цепочке настройки есть сеанс factory, который можно использовать, используя метод .Cache, хотя некоторые свойства необходимо установить вручную через вызов .ExposeConfiguration.