在 .NET Core 2 WebAPI 应用程序中,dbcontext 的范围和生命周期是多少

In a .NET Core 2 WebAPI app, what is the scope and lifetime of a dbcontext

我有一个 .NET Core 2 WebAPI 应用程序。在 Startup class' ConfigureServices 中,我添加了一个带有 services.AddDbContext<> 的 DbContext 和一个带有 services.AddScoped<,>...

的存储库

dbcontext 何时创建,持续多长时间?

在我使用 WPF 桌面的日子里,我在 Using 语句中创建了我的 dbcontext,所以,我总是知道范围。但是现在在 Core 2 WebAPI 中,dbcontext 的生命周期对我来说有点不那么明显了。而且,多个用户可以同时点击 API,他们每个人都有自己的 dbcontext 吗?

默认情况下,在 ASP.NET 核心用语中添加了上下文 "scoped",这意味着大多数情况下确实是 request-scoped。您的主应用程序只运行一次(Startup 中的所有内容,等等)。对于每个请求,都会创建一个唯一的请求管道,其中涉及更新诸如控制器之类的东西,然后在请求结束时将其处理掉。使用请求范围的上下文,您的上下文也将在第一次需要注入请求管道时更新,并且在同一请求管道中所有未来对 at 上下文的使用都将使用相同的上下文。在请求结束时,它将被处理。