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