【发布时间】:2022-07-29 17:57:24
【问题描述】:
我想为我的应用程序创建一个后台任务,在该任务中,我需要 DbContext 每 5 秒对数据进行一次操作。我尝试了两种获取 DbContext 的方法,看起来它们都有效,但我现在想要它们之间有什么区别(如果有的话)
这是第一种方法
private readonly IServiceScopeFactory _serviceScopeFactory;
public worker(IServiceScopeFactory serviceScopeFactory)
{
_serviceScopeFactory = serviceScopeFactory;
}
private void DoWork(object? state)
{
var scope = _serviceScopeFactory.CreateScope();
var context = scope.ServiceProvider.GetService<ApplicationDbContext>();
}
这是我尝试的第二种方法
private void DoWork(object? state)
{
using (var db = new ApplicationDbContext(new DbContextOptions<ApplicationDbContext>()))
{
//do job
}
}
它们似乎都在工作。当方法调用时,它们不是都被处理和重新创建了吗?有什么区别?你更喜欢哪一个?为什么?
【问题讨论】:
标签: c# entity-framework dbcontext asp.net-core-hosted-services