Dal*_*ser 3 c# entity-framework-core asp.net-core .net-5
我正在使用推荐的方法来创建 DbContext通过依赖注入实例。
在 Startup.cs -
services.AddDbContext<DashboardContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DashboardConnection")));
Run Code Online (Sandbox Code Playgroud)
并在控制器中 -
private readonly DashboardContext db;
public AccountController(DashboardContext context)
{
db = context;
}
Run Code Online (Sandbox Code Playgroud)
我想知道的是这个实例什么时候被处理掉。
以前我们总是使用在using大括号结束时处理的语句 -
using (DashboardContext db = new DashboardContext())
{
// Query
}
Run Code Online (Sandbox Code Playgroud)
使用该AddDbContext方法,DbContext将创建一个Scoped默认情况下生命周期的a;这意味着,它的生命周期在当前请求范围内,一旦当前请求完成,它就会被处理掉。
但是您可以通过为contextLifetime参数传递一个值来覆盖默认值,例如 -
services.AddDbContext<DashboardContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DashboardConnection")),
ServiceLifetime.Transient);
Run Code Online (Sandbox Code Playgroud)
进一步的细节检查 - AddDbContext
编辑 - (回复@Dale 的评论):
考虑到 ASP.NET Core MVC 的整体架构,以及我们如何倾向于使用该框架,我会说(个人意见)一般来说,对于大多数应用程序来说,最好坚持到默认Scoped生命周期。
在回答中,我只是想明确说明手动配置选项适合您。当然,可能存在手动配置使用的用例或场景(取决于您如何设计自己的应用程序)。
| 归档时间: |
|
| 查看次数: |
280 次 |
| 最近记录: |