2009-08-26 9 views
3

J'ai fait un site en utilisant ASP.NET MVC, NHibernate et MySQL. Dans mon projet, j'ai quelques classes de référentiels, chacun avec des méthodes utilisant des codes comme celui-ci:Comment fermer une connexion NHibernate?

using(ISession session = NHibernateHelper.OpenSession()) { 
    using(ITransaction transaction = session.BeginTransaction()) { 
     session.Save(cidade); 
     transaction.Commit(); 
    } 
} 

je viens ASP classique, donc je suis si la connexion usure avec MySQL est en fait fermé. En fait, je suis usure s'il y a une connexion comme il y avait sur ASP classique. Dois-je faire quelque chose pour fermer explicitement la connexion/session ou est-il «autoclosable»?

Il y a un moyen de faire s'il y a beaucoup de connexions ouvertes sur mon serveur?

Merci beaucoup.

Répondre

5

La session gère très bien la connexion, donc vous n'avez rien à faire manuellement, tant que vous n'oublierez pas de disposer de la session (comme vous le faites). La connexion n'est pas ouverte pendant toute la durée de la session, mais uniquement lorsque cela est nécessaire. Il n'y aura pas plus de connexions ouvertes à la base de données que la quantité de connexions dans le pool de connexion, qui est 100 par défaut. 100 connexions ne seront pas à beaucoup dans presque tous les scénarios, de sorte que vous n'avez rien à faire quand beaucoup de connexions sont ouvertes. Sur un site web très occupé, vous n'utiliserez même pas toutes les 100 connexions, ce sera quelque chose comme 20-40 connexions ouvertes en raison de la taille du pool de threads pour les webrequests.

Questions connexes