2010-11-05 9 views
1

Mon scénario est assez simple, j'ai 1 table avec environ 20 produits que je voudrais ajouter au cache de niveau 2 (SysCache) en utilisant Fluent NHibernate. J'interroge cette table de 4 manières différentes, donc je me dis que je collerais le tout dans le cache de temps en temps et réduirais les hits de la base de données.Approche correcte de la configuration de syscache nhibernate fluide avec une table et quatre requêtes?

Mes 4 requêtes sont:

  1. Tous (démarrage, max) pour la pagination
  2. Bydate (date) pour obtenir des produits avant ou après une certaine date
  3. BYID (id)
  4. ByName (nom)

J'ai activé SysCache dans la configuration courante en utilisant le code ci-dessous et ajouté la configuration appropriée à web.config.

MsSqlConfiguration.MsSql2008.Cache(c => c.ProviderClass<SysCacheProvider>() 
             .UseQueryCache()) 

J'ai ajouté le code suivant à la ProductMap

Cache.ReadWrite().Region("testregion"); 

Maintenant, comment procèdes-je d'ici? Dois-je ajouter SetCachable (true) à mes 4 requêtes? Est-ce la bonne approche?

Une partie de moi pense qu'il devrait y avoir un moyen de mettre en cache une requête All(), puis de pointer les 4 requêtes ci-dessus pour utiliser la requête All() en mémoire cache. Peut-être que mes hypothèses sont complètement fausses et chaque requête doit être ajoutée au cache séparément en utilisant SetCachable (true) au niveau de la requête.

Quelle est la bonne approche pour configurer le cache pour ce cas?

Merci

Répondre

0

La mise en cache des requêtes est activée individuellement. Il n'y a pas de raccourcis intégrés.

Bien sûr, vous pouvez ajouter une méthode d'extension, ou utiliser une classe de base qui le fait, mais cela n'en vaut vraiment pas la peine: la mise en cache en gros améliore rarement les performances.

Questions connexes