C# Hangfire中的JobActivator不会为每次运行RecurringJob实例化DataContext
我正在使用C# Hangfire中的JobActivator不会为每次运行RecurringJob实例化DataContext,c#,.net,entity-framework,hangfire,hangfire-autofac,C#,.net,Entity Framework,Hangfire,Hangfire Autofac,我正在使用HangFire和EntityFramework进行定期工作 public void Start(IContainer container) { GlobalConfiguration.Configuration .UseColouredConsoleLogProvider(LogLevel.Debug) .SetDataCompatibilityLevel(CompatibilityLevel.Version_170) .UseSimpleAssemblyNam
HangFire
和EntityFramework
进行定期工作
public void Start(IContainer container)
{
GlobalConfiguration.Configuration
.UseColouredConsoleLogProvider(LogLevel.Debug)
.SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
.UseSimpleAssemblyNameTypeSerializer()
.UseActivator(new MyActivator(container))
.UseRecommendedSerializerSettings();
RecurringJob.AddOrUpdate<EveryMinute>((x) => x.ExecuteAsync(), Cron.Minutely);
}
然后我对Datacontext
和RepositoryA
进行了ctor
初始化
public EveryMinute(DataContext dataContext,RepositoryA repositoryA)
{
_dataContext = dataContext;
_repositoryA = repositoryA;
}
然而,当我在每分钟从数据库中检索数据时,如下面所示,我收到了错误的数据(该项目是由其他应用程序在Hangfire作业之外更新的)
从创建作业(应用程序启动)时起,项或数据上下文似乎已被“缓存”。因为当我使用
public EveryMinute()
{
_dataContext = new DataContext();
_repositoryA = new RepositoryA(_dataContext);
}
它很好用
我是不是用错激活器了?或者如何为依赖项注入的每次调用指定我需要新实例
DataContext
?Hangfire中的作业共享activator的实例
因此我使用了-Hangfire.Autofac
您可以指定依赖项在每个作业中具有实例
containerBuilder.RegisterType<DataContext>().InstancePerBackgroundJob();
Hangfire中的作业共享activator实例 因此我使用了-
Hangfire.Autofac
您可以指定依赖项在每个作业中具有实例
containerBuilder.RegisterType<DataContext>().InstancePerBackgroundJob();
containerBuilder.RegisterType<DataContext>().InstancePerBackgroundJob();
GlobalConfiguration.Configuration.UseAutofacActivator(containerBuilder.Build())