繁体   English   中英

DbContext 实例何时在 ASP.NET Core 5 中得到处置

[英]When does a DbContext instance get disposed in ASP.NET Core 5

我正在使用推荐的方法通过依赖注入创建DbContext实例。

在 Startup.cs -

services.AddDbContext<DashboardContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DashboardConnection")));

并在 Controller -

private readonly DashboardContext db;
public AccountController(DashboardContext context)
{
    db = context;
}

我想知道的是这个实例什么时候被处理掉。

以前我们总是使用using语句来处理大括号的关闭 -

using (DashboardContext db = new DashboardContext())
{
    // Query
}

使用AddDbContext方法,默认情况下会创建一个具有Scoped生命周期的DbContext 这意味着,它的生命周期在当前请求的范围内,一旦当前请求完成,它就会被释放。

但是您可以通过传递contextLifetime参数的值来覆盖默认值,例如 -

services.AddDbContext<DashboardContext>(options => 
    options.UseSqlServer(
        Configuration.GetConnectionString("DashboardConnection")),
        ServiceLifetime.Transient);

更多细节检查 - AddDbContext

编辑 - (回复@Dale的评论):
考虑到 ASP.NET 核心 MVC 的整体架构,以及我们倾向于如何使用该框架,我想说(个人意见)通常对于大多数应用程序来说最好坚持默认的Scoped生命周期。
在答案中,我只是想明确说明手动配置选项适合您。 当然,可能存在手动配置有用的用例或场景(取决于您如何设计自己的应用程序)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM