Boa tarde, modifiquei as classes conforme orientado, mas quando comento na classe ProdutoDao public void Adiciona(Produto produto) { this.contexto.Produtos.Add(produto); // this.contexto.SaveChanges(); } o SaveChanges o produto deixa de ser persistido, ou seja, o filtro não funcionando. Segue classes comom e filters.
using System; using System.Collections.Generic; using System.Linq; using System.Web; using Ninject.Web.Mvc.FilterBindingSyntax; using System.Web.Mvc;
namespace LojaWebEF.Filters { public class SaveChangesFilter : ActionFilterAttribute { private EntidadesContext contexto; public SaveChangesFilter(EntidadesContext contexto) { this.contexto = contexto; } / public override void OnActionExecuted(ActionExecutedContext filterContext) { if (contexto. == null) { // se não ocorreu nenhum erro, então grave as modificações contexto.SaveChanges(); } contexto.Dispose(); }/
public override void OnActionExecuted(ActionExecutedContext filterContext) { if (filterContext.Exception == null) { // se não ocorreu nenhum erro, então grave as modificações this.contexto.SaveChanges(); } this.contexto.Dispose(); }
public override void OnResultExecuted(ResultExecutedContext filterContext) { if (filterContext.Exception == null) { this.contexto.SaveChanges(); } this.contexto.Dispose(); }
} }
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(LojaWebEF.App_Start.NinjectWebCommon), "Start")] [assembly: WebActivatorEx.ApplicationShutdownMethodAttribute(typeof(LojaWebEF.App_Start.NinjectWebCommon), "Stop")]
namespace LojaWebEF.App_Start { using System; using System.Web;
using Microsoft.Web.Infrastructure.DynamicModuleHelper;
using Ninject; using Ninject.Web.Common; using LojaWebEF.Filters; using Ninject.Web.Mvc.FilterBindingSyntax; using System.Web.Mvc; using Ninject.Web.Mvc.FilterBindingSyntax;
public static class NinjectWebCommon { private static readonly Bootstrapper bootstrapper = new Bootstrapper();
/// /// Starts the application /// public static void Start() { DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule)); DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule)); bootstrapper.Initialize(CreateKernel); }
/// /// Stops the application. /// public static void Stop() { bootstrapper.ShutDown(); }
/// /// Creates the kernel that will manage your application. /// /// The created kernel. private static IKernel CreateKernel() { var kernel = new StandardKernel(); try { kernel.Bind>().ToMethod(ctx => () => new Bootstrapper().Kernel); kernel.Bind().To();
RegisterServices(kernel); return kernel; } catch { kernel.Dispose(); throw; } }
/// /// Load your modules or register your services here! /// ///
The kernel. private static void RegisterServices(IKernel kernel) { // registro dos outros componentes int ordemExecucao = 1; kernel.BindFilter(FilterScope.Global, ordemExecucao);// kernel.Bind().ToSelf().InRequestScope(); }
} }