как добавить базу данных sqlserver с помощью задания hangfire и entityframework - PullRequest
0 голосов
/ 04 мая 2020

Привет! У меня есть файл hangfire, который запускается в файле startup.cs, и приборная панель работает, но я хочу добавить задание для добавления поля в базу данных sqlserver каждую минуту. Можете ли вы мне помочь?

1 Ответ

0 голосов
/ 04 мая 2020

Я реализовал класс обслуживания для хранения данных в БД. который будет использоваться для повторяющегося задания

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...