我有一个使用EF的ASP.NET CORE Web API。我想知道是否需要手动处理我的dbcontext。使用DI添加dbcontext时,我理解这是作为范围服务添加的,它为每个请求重新创建上下文。
我已将其注册为服务:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<FeedbackContext>();
}
在控制器中使用如下:
public Controller(FeedbackContext context)
{
_context = context;
}
我是否需要在控制器中处理上下文,如下所示:
protected override void Dispose(bool disposing)
{
if (disposing)
{
_context.Dispose();
}
base.Dispose(disposing);
}
或者这是为我处理的吗?
答案 0 :(得分:7)
您无需致电Dispose
。 ASP.NET Core将为您做到这一点。使用AddDbContext
,上下文将作用于请求。请求完成后,将处理所有作用域对象。
事实上,您可以通过覆盖Dispose
并在其中放置断点或记录某些内容来自行查看。
public class FeedbackContext : DbContext
{
public override void Dispose()
{
base.Dispose();
}
}