如何在ASP.NET Core Web API项目中添加使用DbContext的后台服务
ASP.NET Core 后台服务访问 DbContext 解决方案
- 你要的是ASP.NET Core官方支持的托管服务(Hosted Service),这就是启动时自动运行、可持续执行直到应用停止的后台任务方案。
- 因为
DbContext是Scoped生命周期(每次请求创建一次),不能直接注入到Singleton的托管服务里,得用IServiceScopeFactory创建临时作用域来获取DbContext实例。 - 核心实现逻辑:
- 写一个继承自
BackgroundService的类,构造函数注入IServiceScopeFactory。 - 在
ExecuteAsync方法里,用CreateScope()生成作用域,再从作用域的服务提供者里取出你的DbContext,之后就能正常做数据库操作了。 - 在
ConfigureServices里调用AddHostedService<你的后台服务类>()完成注册,应用启动时就会自动运行这个服务。
- 写一个继承自
官方文档参考:
- 《在 ASP.NET Core 中使用后台服务》:涵盖托管服务的创建、注册、运行逻辑以及生命周期管理
- 《在 ASP.NET Core 中使用 DbContext》:包含在非控制器场景(比如后台服务)中获取 DbContext 的具体方法
内容的提问来源于stack exchange,提问作者opadfnezig
相关产品推荐
相关产品推荐

