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();
}
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();
}
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!