1

J'ai réussi à configurer le cache L2 pour Get \ Load dans FHN, mais cela ne fonctionne pas pour les requêtes configurées avec l'interface ICriteria - il ne met pas en cache les résultats de ces requêtes.NHibernate L2 Cache - configuration nHibernate fluide

Est-ce que quelqu'un sait pourquoi?

Les configurations sont les suivantes:

ICriteria:

return unitOfWork 
     .CurrentSession 
     .CreateCriteria(typeof(Country)) 
     .SetCacheable(true); 

Entité Mapping:

public sealed class CountryMap : ClassMap<Country>, IMap 
{ 
    public CountryMap() 
    { 
     Table("Countries"); 
     Not.LazyLoad(); 
     Cache.ReadWrite().IncludeAll(); 
     Id(x => x.Id); 
     Map(x => x.TwoLetter); 
     Map(x => x.ThreeLetter); 
     Map(x => x.Name); 
    } 
} 

Et la configuration usine de session pour la propriété de base de données:

return() => MsSqlConfiguration.MsSql2005 
          .ConnectionString(BuildConnectionString()) 
          .ShowSql() 
          .Cache(c => c.UseQueryCache() 
            .QueryCacheFactory<StandardQueryCacheFactory>() 
            .ProviderClass(configuration.RepositoryCacheType) 
            .UseMinimalPuts()) 
          .FormatSql() 
          .UseReflectionOptimizer(); 

Vive

AWC

Répondre

2

Avez-vous essayé d'ajouter un appel à la méthode UseQueryCache() dans la configuration?

.Database(MsSqlConfiguration.MsSql2008 
    .ConnectionString(c => c.FromConnectionStringWithKey(csStringName)) 
    .ShowSql() 
    .Cache(cache=>cache.ProviderClass<NHibernate.Caches.SysCache2.SysCacheProvider() 
    .UseQueryCache())) 
Questions connexes