2010-01-07 6 views
23

Ist es möglich, den L2-Cache-Provider im Code über FHN zu konfigurieren?NHibernate L2-Cache-Konfiguration in Fluent NHibernate

eine Zeile der folgenden Konfiguration hinzuzufügen ist, was ich nach:

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

Prost

AWC

Antwort

30

Dies ist möglich, von FNH, im Beispiel unten finden Sie in der 'Cache' Immobilie:

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

Prost

AWC


Hinweis, für Fluent NHibernate> = 3.4.0.0 es erscheint die Konfiguration etwas anders. Verwenden Sie das nuget Paket für SysCache von 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 Methode akzeptiert Typ Parameter und Nutzung kann als 'c.ProviderClass neu geschrieben werden ()'. :) –

+4

Nur eine Notiz, die Sie wahrscheinlich schon wissen: Verwenden Sie nicht den HashTable-Cacheprovider für den Produktionscode. – Hace

+1

Warum nicht? Welche anderen Optionen sind verfügbar? – Seva