Я нашел очень мало документации для работы SharedCache с NHibernate, не говоря уже о том, чтобы делать это свободно. Однако это не сложный процесс:
Вы должны сообщить NHibernate, что вы используете SharedCache в качестве поставщика кеша. Другой ответ о переполнении стека дает пример реализации для Fluent NHibernate. Ключевым битом является функция Cache
, за исключением того, что здесь вы захотите использовать NHibernate.Caches.SharedCache.SharedCacheProvider
вместо NHibernate.Cache.HashtableCacheProvider
.
Кроме того, чтобы настроить его не бегло, вы используете что-то вроде этого в вашей конфигурации:
<add key="hibernate.cache.provider_class" value="NHibernate.Caches.SharedCache.SharedCacheProvider, NHibernate.Caches.SharedCache" />
Или, если вы настраиваете через Spring.NET остальные записи конфигурации NHibernate:
<entry key="cache.provider_class" value="NHibernate.Caches.SharedCache.SharedCacheProvider, NHibernate.Caches.SharedCache" />
Затем вам нужно будет добавить записи web.config / app.config для кеша, как при использовании SharedCache без NHibernate, например:
<configSections>
<section name="indexusNetSharedCache" type="MergeSystem.Indexus.WinServiceCommon.Configuration.Client.IndexusProviderSection, MergeSystem.Indexus.WinServiceCommon" />
</configSections>
<indexusNetSharedCache defaultProvider="IndexusSharedCacheProvider">
<servers>
<add key="myServer1" ipaddress="127.0.0.1" port="48888"/>
</servers>
<providers>
<add name="IndexusSharedCacheProvider" type="MergeSystem.Indexus.WinServiceCommon.Provider.Cache.IndexusSharedCacheProvider, MergeSystem.Indexus.WinServiceCommon" />
</providers>
</indexusNetSharedCache>
Вы можете найти больше информации о настройке клиента SharedCache на их веб-сайте , хотя обязательно настройте также каждый сервер.
Надеюсь, это поможет - я не смог полностью проверить это, поэтому я мог где-то ошибиться.