isessionfactory fluently example nhibernate fluent-nhibernate

fluently - Agrupación de conexiones de NHibernate



nhibernate download c# (1)

Estoy considerando utilizar Fluent NHibernate para una nueva aplicación con SQL Server 2008 y tengo problemas para entender el comportamiento de manejo de conexión que estoy viendo.

Estoy monitoreando conexiones usando sp_who2 y esto es lo que veo:

  1. Cuando se crea SessionFactory, se abre una única conexión. Esta conexión parece permanecer abierta hasta que se mate la aplicación.

  2. No se abre ninguna conexión cuando se abre una nueva sesión. (Está bien, entiendo que NHibernate espera hasta el último momento para crear conexiones con la base de datos).

  3. No se abre ninguna conexión nueva incluso cuando ejecuto una consulta a través de NHibernate. Debo asumir que está utilizando la conexión creada cuando se creó SessionFactory, que aún está abierto. Establecí un punto de interrupción después de la consulta (antes de que se cerrara la sesión) y no aparecieron nuevas sesiones en sp_who.

Ejecutar una aplicación completa a través de una sola conexión no es aceptable (obviamente). ¿Cómo puedo asegurarme de que cada ISession tenga su propia conexión? Estoy seguro de que hay algo obvio que me falta aquí ...

Gracias por adelantado.


El comportamiento que ve no es nada específico de NHibernate: la agrupación de conexiones es un comportamiento predeterminado en SQL Server.
Incluso si puede sonar incómodo a primera vista, en realidad es algo bueno porque crear nuevas conexiones y mantenerlas es costoso.
(para obtener más información, consulte el artículo de Wikipedia sobre la agrupación de conexiones )

Por lo tanto, no es necesario intentar que NH abra una nueva conexión para cada sesión, ya que la reutilización de las conexiones existentes realmente mejora el rendimiento de SQL Server.