Я реализовал класс обслуживания для хранения данных в БД. который будет использоваться для повторяющегося задания
public interface ITestService{
Task SaveData();
}
public class TestService : ITestService{
private readonly ApplicationDbContext _dbContext;
public TestService(ApplicationDbContext dbContext)
{
_dbContext = dbContext;
}
public async Task SaveData()
{
_dbContext.Users.Add(new User
{
UserName = "testUser",
Email = "testa@gmail.com"
});
await _dbContext.SaveChangesAsync();
}
}
Внутри ConfigureServices()
в файле startup.cs Я зарегистрировал перестрелку с помощью dbcontext и serviceClass, который будет сохранять данные в базе данных
services.AddHangfire(x => x.UseSqlServerStorage(Configuration.GetConnectionString("DefaultConnection")));
services.AddHangfireServer();
services.AddTransient<ApplicationDbContext>(); //Your DbContext
services.AddTransient<ITestService, TestService>(); //Your Service to store data
в том же файле измените метод configure
на
Configure(IApplicationBuilder app, IHostingEnvironment env, IRecurringJobManager recurringJobManager, ITestService testService)
внутри вышеупомянутого метода добавьте вызов следующим методам
app.UseHangfireDashboard();
recurringJobManager.AddOrUpdate("First recurring job", () => testService.SaveData(), Cron.MinuteInterval(1)); //Instead of the Cron.MinuteInterval() you can use cron expressions