我已经使用标准代码注册了一个Entity Framework DBContext,像这样:
public void ConfigureServices(IServiceCollection services)
{
[...]
services.AddDbContext<MyDbContextType>(ServiceLifetime.Scoped);
}
这对需要 EF 服务的控制器调用的服务非常有效。
然而,我有一些特殊的控制器。它们在新线程上启动作业,在 web 请求的生命周期之外运行。当这些作业使用我的 DbContext(或使用使用我的 DbContext 的服务)时,会抛出错误,因为已经释放了范围实例。
是否有一种方法可以覆盖注入的 DbContext 的服务生命周期,只针对某些控制器?或者您能推荐其他解决方案吗?
IServiceScopeFactory
的引用吗? - vmachacek