【发布时间】:2018-06-30 07:40:41
【问题描述】:
问题
我应该如何将DbContext 实例注入(使用标准依赖注入)到IHostedService 中?
我尝试了什么
目前我的IHostedService 类在构造函数中采用MainContext(派生自DbContext)实例。
当我运行应用程序时,我得到:
无法使用单例“Microsoft.Extensions.Hosting.IHostedService”中的范围服务“Microsoft.EntityFrameworkCore.DbContextOptions”。
所以我尝试通过指定使DbContextOptions 瞬态:
services.AddDbContext<MainContext>(options =>
options.UseSqlite("Data Source=development.db"), ServiceLifetime.Transient);
在我的Startup 班级中。
但错误仍然存在,即使根据this solved Github issue 传递的DbContextOptions 应该具有在AddDbContext 调用中指定的相同生命周期。
我不能将数据库上下文设为单例,否则对它的并发调用会产生并发异常(因为不能保证数据库上下文是线程安全的)。
【问题讨论】:
-
也许注入一个上下文工厂?例如stackoverflow.com/a/11748370/1663001
标签: c# asp.net .net asp.net-core .net-core