public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { var method = context.HttpContext.Request.Method; var dontUseTransaction = method.Equals("GET") || method.Equals("HEAD") || method.Equals("OPTIONS"); if (dontUseTransaction) { await next(); return; } try { dataContext.BeginTransaction(); await next(); await dataContext.CommitTransactionAsync(); } catch (Exception) { dataContext.RollbackTransaction(); throw; } }