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

Não foi incluído o comando "Dispose" no método Salva

Não foi incluído o comando "Dispose" no método Salva. Ele não seria necessário? Para que server então?

        public void Salva(Usuario usuario)
        {
            contexto.Usuarios.Add(usuario);
            contexto.SaveChanges();
        }
2 respostas
solução!

Olá, Davidson!

Existe uma discussão antiga, sobre ser necessário ou não um Dispose() após usar os dados do contexto: http://blog.jongallant.com/2012/10/do-i-have-to-call-dispose-on-dbcontext/

A conclusão tirada do artigo acima é que, em muitos casos do mundo real, é inofensivo deixar de chamar Dispose() no contexto do EF após usá-lo, pois cada vez que você chama o método SaveChanges() a conexão com o SQL Server é aberta e, após a execução da query, ela é sempre fechada. Então não restam conexões abertas, mesmo sem fazermos o Dispose().

Em todo caso, você pode modificar o código acima para declarar EntidadesContext dentro de um bloco using, que irá chamar implicitamente o Dispose() ao final da execução:

        public void Salva(Usuario usuario)
        {
            using (EntidadesContext contexto = new EntidadesContext ())
            {   
               contexto.Usuarios.Add(usuario);
               contexto.SaveChanges();
            }
        }

Obrigado pela explicação Marcelo Oliveira!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software