2010-01-07 18 views
23

¿Es posible configurar el proveedor de caché L2 en el código a través de FHN?NHibernate L2 Configuración de caché en Fluiber NHibernate

Adición de una línea a la siguiente configuración es lo que busco:

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

Saludos

AWC

Respuesta

30

Esto es posible a partir de la HNF, en el siguiente ejemplo ver el 'caché' de propiedad:

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

Saludos

AWC


Nota, por Fluido NHibernate> = 3.4.0.0 parece que la configuración es ligeramente diferente. Utilice el paquete Nuget para SysCache de 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

método ProviderClass acepta tipo de parámetro y su uso se puede reescribir como 'c.ProviderClass ()'. :) –

+4

Solo una nota que probablemente ya sepa: no use el proveedor de Caché HashTable para el código de producción. – Hace

+1

¿Por qué no? ¿Cuáles son las otras opciones disponibles? – Seva

Cuestiones relacionadas