Skip to content

Instantly share code, notes, and snippets.

@ChrisMcKee
Created January 4, 2013 11:55
Show Gist options
  • Select an option

  • Save ChrisMcKee/4452072 to your computer and use it in GitHub Desktop.

Select an option

Save ChrisMcKee/4452072 to your computer and use it in GitHub Desktop.
using System;
using System.Web.Mvc;
[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public class TransactionAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var session = MvcApplication.SessionFactory.GetCurrentSession();
session.BeginTransaction();
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var session = MvcApplication.SessionFactory.GetCurrentSession();
using (session.Transaction)
{
if (filterContext.Exception == null)
{
session.Transaction.Commit();
}
else
{
session.Transaction.Rollback();
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment