Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Hangfire中的JobActivator不会为每次运行RecurringJob实例化DataContext_C#_.net_Entity Framework_Hangfire_Hangfire Autofac - Fatal编程技术网

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())