Я использовал для реализации моих классов репозитория, как вы можете видеть ниже
public Class MyRepository
{
private MyDbContext _context;
public MyRepository(MyDbContext context)
{
_context = context;
}
public Entity GetEntity(Guid id)
{
return _context.Entities.Find(id);
}
}
Однако я недавно прочитал эту статью, в которой говорится, что плохая практика заключается в том, что контекст данных является частным членом вашего репозитория: http://devproconnections.com/development/solving-net-scalability-problem
Теперь, теоретически статья правильная: поскольку DbContext реализует IDisposable, наиболее правильная реализация будет следующей.
public Class MyRepository
{
public Entity GetEntity(Guid id)
{
using (MyDbContext context = new MyDBContext())
{
return context.Entities.Find(id);
}
}
}
Однако, согласно этой другой статье, утилита DbContext не была бы существенной: http://blog.jongallant.com/2012/10/do-i-have-to-call-dispose-on-dbcontext.html
Какая из двух статей правильная? Я совершенно смущен. Наличие DbContext как частного члена в вашем классе репозитория может действительно вызвать "проблемы масштабируемости", как предлагает первая статья?