是否应该通过DI使用Entity Framework DbContext的存储库实现IDisposable?

时间:2015-05-09 18:15:19

标签: entity-framework-core

我已经看到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);
}

1 个答案:

答案 0 :(得分:0)

您不需要覆盖DbContext.Dispose。

除非您需要释放在DbContext自定义中创建的资源,否则框架提供的基本实现应该足够了。