Esta es una pregunta bastante fundamental al usar NHibernate en una aplicación web, pero no veo ninguna mejor práctica acordada cuando busco en la web. Lo he visto hecho en muchos lugares diferentes:¿Dónde abrir y cerrar NHibernate ISession en una aplicación web (específicamente MVC)?
Creado y dispuesto en el método de Repository - Esto me parece una tontería, ya que cuando obtiene el objeto ya está desprendido.
Al comienzo y al final de la acción del controlador - Esto parece mejor, pero molesto tener que hacerlo para cada acción.
a nivel de aplicación, en BeginRequest global.asax y EndRequest - Esta parece la mejor idea, pero de nuevo, he visto algunos ejemplos en la creación de Init en lugar de BeginRequest (arquitectura afilada por ejemplo) - aunque estoy no estoy seguro de por qué.
¿Quizás hay otros enfoques?
¿Pueden los contenedores IoC ayudar de alguna manera aquí?
¿Quizás conoces un buen recurso en la web con respecto a esto?
Y, ¿qué método usas?
Gracias
Sharp Architecture explica por qué, es algo con IIS7 por lo que recuerdo. – queen3
Bueno, en los comentarios del código dice: "Debido a problemas en IIS7, la inicialización de NHibernate debe ocurrir en Init().", Pero no sé cuáles son los problemas. – UpTheCreek