J'utilisais une session régulière pour charger certains éléments de la base de données via linq. Le problème est qu'il met en cache les entités et la charge de mémoire augmente beaucoup inutilement. Existe-t-il un moyen de remplacer la session par une session sans état sans introduire de nombreux changements dans le code client?Y at-il Linq à Nhibernate pour une session sans état?
Répondre
Il n'est pas possible d'utiliser Linq avec IStatelessSession.
Vous pouvez utiliser toutes les autres méthodes de requête (Get, Criteria, HQL et SQL).
Mise à jour (2010-07-19): Je crois que Steve peut-être ajouter ceci à fournisseur 3.x NH)
Avez-vous obtenu le chargement paresseux allumé?
Je n'ai aucune expérience avec LINQ to NHibernate, mais dans mon application, le chargement paresseux fait une énorme différence de performance.
Le problème est la consommation de mémoire hight. Au cours du profilage de la mémoire, j'ai découvert que la mémoire n'est pas libérée par le garbage collector. Le problème est devenu la mise en cache de premier niveau qui ne peut pas être désactivée. La mémoire est nettoyée après la fermeture de la session. –
soutien LINQ pour la session sans état est inclus dans la version 3.1.0 Voir les notes de version: https://nhibernate.jira.com/browse/NH-2211
Lien fixe: https://nhibernate.jira.com/browse/NH-2211 –
http://stackoverflow.com/questions/118108/how-do-i-totally-disable-caching- in-nhibernate –