Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Exercício 13 - SaveChanges com Filtro

Olá, não entendi em qual classe irei implementar o SaveChangesFilter : ActionFilterAttribute e o override void OnActionExecuted(ActionExecutedContext contexto). Por favor, poderiam me dar maiores explicações sobre o funcionamento do saveChanges pelo nInject conforme explica o exercício ?

3 respostas

Ola Marcelo

O SaveChangesFilter é uma nova classe que terá que ser criada dentro do seu projeto. Essa classe deve herdar de System.Web.Mvc.ActionFilterAttribute do asp.net mvc.

E dentro dela você vai adicionar o override para o OnActionExecuting. Um exemplo de implementação de filtro pode ser encontrado no último capítulo do curso e asp.net mvc 3.

Victor, eu estou fazendo da forma que falou, mas ainda assim está apresentando erro na session que tem no código...Ficou da seguinte forma a minha classe:

Por favor, me ajude, não estou conseguindo prosseguir nos exercícios.

    public class SaveChangesFilter
    {
        private EntidadesContext contexto;
        public SaveChangesFilter(EntidadesContext contexto)
        {
            this.contexto = contexto;
        }
        public override void OnActionExecuted(ActionExecutedContext contexto)
        {
            if (contexto.Exception == null)
            {
                // se não ocorreu nenhum erro, então grave as modificações
                session.Transaction.Commit();
            }            
            this.contexto.Dispose();
        }
    }
solução!

Olá Marcelo

A resposta do Exercício estava com um problema. O código correto é:

public class SaveChangesFilter : ActionFilterAttribute
{
    private EntidadesContext contexto;
    public SaveChangesFilter(EntidadesContext contexto)
    {
        this.contexto = contexto;
    }
    public override void OnActionExecuted(ActionExecutedContext contexto)
    {
        if (contexto.Exception == null)
        {
            // se não ocorreu nenhum erro, então grave as modificações
            this.contexto.SaveChanges();
        }            
        this.contexto.Dispose();
    }
}