在使用DI添加dbcontext时是否需要调用context.dispose?

Mat*_*ats 4 c# entity-framework asp.net-web-api asp.net-core

我有一个使用EF的ASP.NET CORE Web API.我想知道是否需要手动处理我的dbcontext.使用DI添加dbcontext时,我理解这是作为范围服务添加的,它为每个请求重新创建上下文.

我已将其注册为服务:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<FeedbackContext>();
}
Run Code Online (Sandbox Code Playgroud)

并在控制器中使用如下:

public Controller(FeedbackContext context)
{
    _context = context;
}
Run Code Online (Sandbox Code Playgroud)

我是否需要在控制器中处理上下文,如下所示:

protected override void Dispose(bool disposing)
{
    if (disposing)
    {
        _context.Dispose();
    }
    base.Dispose(disposing);
}
Run Code Online (Sandbox Code Playgroud)

或者这是为我处理的?

Kne*_*lis 7

你不需要打电话Dispose.ASP.NET Core将为您做到这一点.使用时AddDbContext,上下文将作用于请求.请求完成后,将处理所有作用域对象.

实际上,您可以通过覆盖Dispose并在其中放置断点或记录某些内容来自行查看.

public class FeedbackContext : DbContext
{
    public override void Dispose()
    {
        base.Dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)