Pro*_*ofK 17 .net c# dependency-injection console-application .net-core
我ConfigureServices在我正在构建的Web应用程序中复制了这个,我试图远离Web,只使用控制台应用程序或服务:
serviceCollection.AddScoped<IDbConnection, SqlConnection>(c => new SqlConnection(App.Configuration.GetConnectionString("DefaultConnection")));
Run Code Online (Sandbox Code Playgroud)
控制台应用程序工作正常,但我想知道如何处理连接的生命周期.连接是否以及何时关闭或处置?或者这与瞬态实例的行为相同,我应该自己处理它?
Krz*_*cki 21
当您IServiceProvider从IServiceCollection(BuildServiceProvider方法)构建并使用此实例IServiceProvider来解决时,IDbConnection您将获得IDbConnection每次相同的实例.范围是连接到IServiceProvider.要创建新的作用域,您需要从容器中解析IServiceScopeFactory并使用它来创建IServiceProvider作用域:
using (var scope = scopeFactory.CreateScope())
{
var scopedConnection = scope.ServiceProvider.GetRequiredService<IDbConnection>();
}
Run Code Online (Sandbox Code Playgroud)
处理范围时将处理连接.
在ASP Core作用域由中间件管理,中间件创建新作用域,然后使用IServiceProvider附加到此作用域来解析Controller和此Web请求中的所有内容.在控制台应用程序中,您需要自己管理范围.
| 归档时间: |
|
| 查看次数: |
4944 次 |
| 最近记录: |