【发布时间】:2021-09-15 05:16:18
【问题描述】:
在我的项目中,我使用的是 Autofac 和 Dapper,到目前为止,我一直在以这种方式注册所需的 IDbConnection:
builder
.Register<IDbConnection>(c => new SqlConnection(_connectionString))
.InstancePerLifetimeScope();
但现在我面临的问题是,通过该实现我无法对数据库进行并行操作。
解决方案是创建一个我想的工厂。但我找不到任何信息如何使用 Autofac 来实现。
【问题讨论】:
-
您是否查看过 Autofac 的实例范围信息?我不确定您的情况,但您是否考虑过使用范围
InstancePerDependency? Autofac - Instance Scope。该文档指出,“在其他容器中也称为‘瞬态’或‘工厂’。使用每个依赖范围,每个服务请求都会返回一个唯一的实例。”. -
我认为这行不通。假设您在
MyDapperService中注入IDbConnection。然后你在MyQueryClass中注入你的MyDapperService,如果你多次调用MyDapperService.CallDatabaseMethod,它仍然是同一个实例,因为你已经在MyQueryClass中注入了一次。
标签: c# .net-core autofac dapper