Mercurial > altnet-hispano
diff Agendas/trunk/src/Agendas.Repositories.NHibernate/NHibernateSessionPerRequestAttribute.cs @ 67:c8099df941bd
Implementando persistencia con NHibernate en el proyecto web
author | nelopauselli |
---|---|
date | Thu, 19 May 2011 01:24:56 -0300 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Repositories.NHibernate/NHibernateSessionPerRequestAttribute.cs Thu May 19 01:24:56 2011 -0300 @@ -0,0 +1,36 @@ +using System.Web.Mvc; +using NHibernate; +using NHibernate.Context; + +namespace AltNetHispano.Agendas.Repositories.NHibernate +{ + public class NHibernateSessionPerRequestAttribute: ActionFilterAttribute + { + private readonly ISessionFactory _sessionFactory; + + public NHibernateSessionPerRequestAttribute(ISessionFactory sessionFactory) + { + _sessionFactory = sessionFactory; + } + + public override void OnActionExecuting(ActionExecutingContext filterContext) + { + //iniciar session + var session = _sessionFactory.OpenSession(); + CurrentSessionContext.Bind(session); + + base.OnActionExecuting(filterContext); + } + + public override void OnResultExecuted(ResultExecutedContext filterContext) + { + base.OnResultExecuted(filterContext); + + //cerrar session + var session = _sessionFactory.GetCurrentSession(); + session.Flush(); + session.Close(); + + } + } +} \ No newline at end of file