Fluent NHibernate中的NHibernate L2 Cache配置

Awk*_*der 23 configuration caching velocity fluent-nhibernate

是否可以通过FHN在代码中配置L2缓存提供程序?

在以下配置中添加一行是我所追求的:

 return Fluently.Configure()
                .Database(MsSqlConfiguration.MsSql2005.ConnectionString(c => c.FromConnectionStringWithKey("Temp")).ShowSql())
                .Mappings(m => m.FluentMappings.AddFromAssemblyOf<IMap>())
                .ExposeConfiguration(c => { })
                .BuildSessionFactory();
Run Code Online (Sandbox Code Playgroud)

干杯

AWC

Awk*_*der 31

这可以从FNH获得,在下面的示例中可以看到'Cache'属性:

return Fluently.Configure(fileConfiguration)
  .Database(MsSqlConfiguration
    .MsSql2005
      .ConnectionString(c => c.FromConnectionStringWithKey("Temp"))
      .ShowSql()
      .Cache(c => c.ProviderClass(typeof(NHibernate.Cache.HashtableCacheProvider).AssemblyQualifiedName)
          .UseQueryCache()))
    .Mappings(m => m.FluentMappings.AddFromAssemblyOf<IMap>())
    .ExposeConfiguration(c => {
        c.EventListeners.PostLoadEventListeners = new IPostLoadEventListener[] {new TestPostLoadListener()};
      })
    .BuildSessionFactory();
Run Code Online (Sandbox Code Playgroud)

干杯

AWC


注意,对于Fluent NHibernate> = 3.4.0.0,看起来配置略有不同.从http://nuget.org/packages/NHibernate.Caches.SysCache使用sysCache的nuget包

return Fluently.Configure(fileConfiguration)
  .Database(MsSqlConfiguration
    .MsSql2005
      .ConnectionString(c => c.FromConnectionStringWithKey("Temp"))
      .ShowSql())
    .Cache(c => c.ProviderClass<SysCacheProvider>().UseQueryCache())
    .Mappings(m => m.FluentMappings.AddFromAssemblyOf<IMap>())
    .ExposeConfiguration(c => {
        c.EventListeners.PostLoadEventListeners = new IPostLoadEventListener[] {new TestPostLoadListener()};
      })
    .BuildSessionFactory();
Run Code Online (Sandbox Code Playgroud)

  • ProviderClass方法接受类型参数,用法可以重写为`c.ProviderClass <HashTableCacheProvider>()`.:) (8认同)
  • 您可能已经知道的一个注意事项:不要将HashTable Cacheprovider用于生产代码. (4认同)