我已经看到EF7人在构造函数中注入datacontext的例子。
但是,由于DbContext实现了IDisposable,我担心我的存储库还必须实现IDisposable,通过代码传播。
我见过的例子没有实现IDisposable,但我不确定原因。
修改
澄清 以前我以通常的方式使用db上下文
using(var db = new SomeContext())
{
return await from row in db.Table
select row).ToListAsync();
}
看看注入的处理方式,DbContext将被传递到存储库构造函数中,但是一旦存储库完成,这个存储库是否必须实现IDisposable来处理DbContext?
如果存储库随后调用另一个更改其注入的DbContext的存储库类,那么这个DBContext是否存在风险?
即
public SomeOtherRepository (SomeContext db)
{
this.db = db;
}
*
public SomeRepository (SomeOtherRepository repo, SomeContext db)
{
this.repo = repo;
this.db = db;
}
public async TaskAdd(Row row)
{
db.Some.Add(row);
await db.SaveChangesAsync();
repo.AddSomethingElse(row.Id);
}
答案 0 :(得分:0)
您不需要覆盖DbContext.Dispose。
除非您需要释放在DbContext自定义中创建的资源,否则框架提供的基本实现应该足够了。