2010-01-07 80 views
23

是否有可能通过FHN在代码中配置L2缓存提供程序?Fluent NHibernate中的NHibernate L2缓存配置

增加一条线以下的配置是什么,我以后是:

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

干杯

AWC

回答

30

这是可能的,从FNH,在下面的例子中看到“缓存”属性:

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(); 

干杯

AWC


注意,对于功能NHibernate> = 3.4.0.0它显示配置稍有不同。从http://nuget.org/packages/NHibernate.Caches.SysCache

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(); 
+8

ProviderClass方法使用NuGet包为SysCache接受类型参数和使用可改写为'c.ProviderClass ()'。 :) – 2010-03-17 10:02:18

+4

只需注意一下,您可能已经知道:不要将HashTable Cacheprovider用于生产代码。 – Hace 2010-06-22 08:48:49

+1

为什么不能?还有哪些其他选择? – Seva 2015-02-25 13:33:48