Как настроить области кеша в Fluent nhibernate и Syscache2
-
23-10-2019 - |
Вопрос
Я пытался внедрить кеш -области со свободным NHIBERNATE, и до сих пор сделал следующее:
1) Установка кэширования в бегстве. Configure ():
private static ISessionFactory CreateSessionFactory()
{
string csStringName = Environment.MachineName;
var nhibConfigProps = new Dictionary<string, string>();
nhibConfigProps.Add("current_session_context_class","web");
var cfg = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008
.ConnectionString(c => c.FromConnectionStringWithKey(csStringName))
.ShowSql()
.Cache(cache=>cache.ProviderClass<NHibernate.Caches.SysCache2.SysCacheProvider>().UseQueryCache()))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<UserMap>())
.ExposeConfiguration(config => config.AddProperties(nhibConfigProps))
.ExposeConfiguration(config=> config.EventListeners.DeleteEventListeners = new IDeleteEventListener[] {new SoftDeleteListener()})
.ExposeConfiguration(config => new SchemaUpdate(config).Execute(false, true))
.BuildSessionFactory();
return cfg;
}
2) Изменил мой классной карту, чтобы включить кеш, и установите область выбора:
public UserMap()
{
Cache.ReadWrite().Region("User");
...
}
Надеюсь, я сделал вышеуказанное правильно, но я не могу понять, где настроить приоритет и продолжительность кэша для каждого региона. Вы знаете, как это сделать? И если вам случится найти недостатки в приведенном выше коде, я бы очень признателен от отзывов.
Решение
Вам необходимо будет добавить приоритетное и срок годности для этого региона в конфигурации SYSCACHE в web/app.config. Взгляни на Этот отличный пост Для большого объяснения использования кэша второго уровня. Примеры используют vanilla nhibernate, но вы должны получить идею - часть настройки Syscache находится в конце поста.