O podes usar algo como esto que publique aca: http://nhforge.org/blogs/nhibernate/archive/2011/03/03/effective-nhibernate-session-management-for-web-apps.aspx
http://joseoncode.com/2011/03/03/effective-nhibernate-session-management-for-web-apps/ La idea de lo que puse ahí es que sea implicito para todo pero lazy. La session se abre la primera vez que se usa y dura para todo el request. De esta forma un request a algo que no usa nhibernate no abre session (ejemplo: imagenes, js y otras cosas) y me evito tener que declarar explicitamente que rutas usan acceso a datos. El miércoles, 27 de junio de 2012, Carlos Peix escribió: > +1, se puede con Action Filter desde el comienzo de la accion hasta el fin > de la vista. > > public override void OnActionExecuting(ActionExecutingContext > filterContext); > y > public override void OnResultExecuted(ResultExecutedContext filterContext); > > Se puede hacer, desde MVC 3, con un Global Action Filter... > > De todas maneras, eso no significa que te despreocupes del lazy en la > vista. Hay que monitorear, como siempre, esas cuestiones para ver si > complican el rendimiento. > > Saludos Edgar! > Extraño el ceviche ecuatoriano! > > ---------------------------------- > Carlos Peix > > 2012/6/27 [email protected] <javascript:_e({}, 'cvml', > '[email protected]');> <[email protected] <javascript:_e({}, > 'cvml', '[email protected]');>> > > Hola Edgar, no se como decir esto, pero tengo que contradecir al > maestro, creo que si tenés la session de NH en el render de la vista. > > Cuando hacer el ActionFilter tenés 4 métodos para sobreescribir: > > Antes de que empiece la acción > Después de que se ejecutó la acción > Antes del render de la vista > Después del render de la vista > > Lo que tenés que hacer es: > Antes de que empiece la acción: abrir session (¿y transacción?) ) y > ponerla como current. > Después de que se ejecutó la acción: si también estás manejando la > transacción: commit o rollback de la transacción según si salió con > excepción o no. > Después del render de la vista: cerrar session. > > Corregidme si estoy equivocado. > > saludos. > nelo > > 2012/6/27 Edgar Ramos <[email protected]>: > > Angel, gracias por contestar > > > > Me gusta mucho el enfoque que propones, de hecho procurare seguirlo, pero > > entoces, si este es el caso, sigue habiendo alguna diferencia en usar > > uno u otro manejo de la session ? > > > > > > Saludos > > Edgar > > > > El 27 de junio de 2012 13:34, Angel Java Lopez <[email protected]> > > escribió: > > > >> Ah! No se como estara ahora... > >> > >> Pero lo primero que se me ocurre: > >> - En session per action filter, al llegar al render de la vista, no > tenes > >> una session disponible para resolver cualquier recorrido de coleccion > lazy y > >> cosas parecidas > >> > >> Dependera de tu aplicacion, si dejas que en las views se resuelvan cosas > >> lazy. > >> > >> Yo ultimamente no uso ese approach. A lo sumo, con lo que me devuelve > >> algun service layer logico al controller, en este controller recorro, > >> digamos, los renglones de una factura, y los pongo de forma adecuada en > un > >> View Model de ASP.NET MVC. Y a mi vista llegan y vienen View Models, y > casi > >> nunca algo de NHibernate. Con lo que podria usar Session per action > filter, > >> tranquilamente > >> > >> Algo levemente relacionado > >> > >> > http://stackoverflow.com/questions/7772704/asp-net-mvc3-3-tier-design-transaction-control-and-business-layer-design-que > >> > >> 2012/6/27 Edgar Ramos <[email protected]> > >>> > >>> Gente un saludo > >>> > >>> Estoy por empezar una aplicacion en asp net mvc 3, y mi duda es la > >>> siguiente, hay alguna diferencia en usar session per request o session > per > >>> action filter ? > >>> Entre otras cosas que voy a utilizar estan para el manejo de IoC/ID es > >>> Castle Windsor version 3 y nh version 3 > >>> > >>> > >>> Gracias por sus comentarios > >>> > >>> > >>> -- > >>> Saludos > >>> Edgar > >>> > >>> -- > >>> Para escribir al Grupo, hágalo a esta dirección: > >>> [email protected] > >>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano > >> > >> > >> -- > >> Para escribir al Grupo, hágalo a esta dirección: > >> [email protected] > >> Para más, visite: http://groups.google.com/group/NHibernate-Hispano > > > > > > > > > > -- > > Saludos > > Edgar > > > > -- > > Para escribir al Grupo, hágalo a esta dirección: > > [email protected] > > Para más, visite: http://groups.google.com/group/NHibernate-Hispano > > -- > Para escribir al Grupo, hágalo a esta dirección: > > > -- > Para escribir al Grupo, hágalo a esta dirección: > [email protected] <javascript:_e({}, 'cvml', > '[email protected]');> > Para más, visite: http://groups.google.com/group/NHibernate-Hispano -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano
