estrutura de entidade c #: uso correto da classe DBContext dentro da sua classe de repositório
Eu costumava implementar minhas classes de repositório, como você pode ver abaixo
public Class MyRepository
{
private MyDbContext _context;
public MyRepository(MyDbContext context)
{
_context = context;
}
public Entity GetEntity(Guid id)
{
return _context.Entities.Find(id);
}
}
No entanto, li recentemente este artigo que diz que é uma prática ruim ter o contexto de dados como um membro privado em seu repositório:http://devproconnections.com/development/solving-net-scalability-problem
Agora, teoricamente, o artigo está correto: como o DbContext implementa IDisposable, a implementação mais correta seria a seguinte.
public Class MyRepository
{
public Entity GetEntity(Guid id)
{
using (MyDbContext context = new MyDBContext())
{
return context.Entities.Find(id);
}
}
}
No entanto, de acordo com este outro artigo, o descarte do DbContext não seria essencial:http://blog.jongallant.com/2012/10/do-i-have-to-call-dispose-on-dbcontext.html
Qual dos dois artigos está certo? Estou bastante confuso. Ter o DbContext como membro privado na sua classe de repositório pode realmente causar "problemas de escalabilidade", como sugere o primeiro artigo?