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

Responder a