gpt4 book ai didi

c# - 何时在 ASP.NET Core 5 中处理 DbContext 实例

转载 作者:行者123 更新时间:2023-12-04 16:38:18 25 4
gpt4 key购买 nike

我正在使用推荐的方法通过依赖注入(inject)创建 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 Core MVC 的整体架构,以及我们倾向于如何使用该框架,我会说(个人观点)通常对于大多数应用程序来说,最好坚持默认的 Scoped生命周期。
在回答中,我只是想说明手动配置选项是为您准备的。当然,手动配置可能在某些用例或场景(取决于您如何设计自己的应用程序)中发挥作用。

关于c# - 何时在 ASP.NET Core 5 中处理 DbContext 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65913192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com