sto cercando di capire come memorizzare nella cache una query uniti utilizzando NHibernate e non sembra come il suo lavoro correttamentePerché in questo esempio non è necessario eseguire il recupero dalla cache?
Ecco il mio codice:
public CacheTestViewModel GetCacheTestViewModel()
{
var vm = new CacheTestViewModel();
var session = Repository.Session;
using (var tx = session.BeginTransaction())
{
vm.Projects = Repository.Session.Query<Project>()
.FetchMany(r=>r.ProjectApplications)
.ThenFetch(r=>r.Application)
.Cacheable().CacheMode(CacheMode.Normal)
.ToList();
tx.Commit();
}
return vm;
}
corro questo più e più volte e sembra che stia caricando gli oggetti Project dalla cache di secondo livello, ma torna al db per interrogare gli oggetti ProjectApplication che è piuttosto lento
E 'possibile che nhibernate memorizzi nella cache l'intera query in modo che l'intero grafico venga restituito dalla cache?
NOTA: ho la cache delle query acceso, così come tutte le entità stabilite con Cache.ReadWrite()
Qui è la mia configurazione della cache
return configuration
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<ApplicationMap>().Conventions.Add(typeof(Conventions)))
.ExposeConfiguration(
c => {
// c.SetProperty("proxyfactory.factory_class", proxyFactory);
c.SetProperty("cache.provider_class", "NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache");
c.SetProperty("cache.use_second_level_cache", "true");
c.SetProperty("cache.use_query_cache", "true");
c.SetProperty("expiration", "86400");
})
.BuildSessionFactory();
Puoi mostrare la configurazione della cache? – Najera
@Najera - Ho aggiunto la configurazione della cache – leora