Entity framework core 通过DI使用实体框架DbContext的存储库是否应该实现IDisposable?

Entity framework core 通过DI使用实体框架DbContext的存储库是否应该实现IDisposable?,entity-framework-core,Entity Framework Core,我已经看到了EF7人员在构造函数中注入datacontext的例子 然而,由于DbContext实现了IDisposable,我担心我的存储库也必须实现IDisposable,并通过代码传播 我看到的示例没有实现IDisposable,但我不知道为什么 编辑 澄清 以前我是以通常的方式使用db上下文的 using(var db = new SomeContext()) { return await from row in db.Table select row).ToLi

我已经看到了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是否存在风险

i、 e

*


您不需要重写DbContext.Dispose


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

我假设DI处理对象的生存期由DI容器本身处理。在某些情况下,一个单例对象根本不被处理对不起,我在最初的问题中没有说清楚,并对其进行了扩展。我的问题不是DbContext,而是在其构造函数中使用它的类,这取决于您如何配置DI,正如@luca前面提到的。重用同一个DbContext实例的危险在于context.SaveChanges()可能会产生意外后果。
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);
}