2010-01-07 12 views
23

Est-il possible de configurer le fournisseur de cache L2 en code via FHN?NHibernate L2 Cache configuration dans Fluent NHibernate

Ajout d'une ligne à la configuration suivante est ce que je suis après:

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

Vive

AWC

Répondre

30

Ceci est possible de FNH, dans l'exemple ci-dessous voir le 'Cache' propriété:

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

Vive

AWC


Remarque, pour Fluent NHibernate> = 3.4.0.0 il semble que la configuration est légèrement différente. Utiliser le paquet NuGet pour 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éthode de ProviderClass accepte Type de paramètre et de l'utilisation peut être réécrite comme 'c.ProviderClass ()'. :) –

+4

Juste une note que vous connaissez probablement déjà: n'utilisez pas HashTable Cacheprovider pour le code de production. – Hace

+1

Pourquoi pas? Quelles sont les autres options disponibles? – Seva