Подскажите, как правильно работать с контекстом базы данных (ef core) внутри Job-ы Quartz.net
Чтобы работать с базой хочу создать _context
как поле джобы.
Выглядело бы это примерно так:
public class LoaderJob:IJob
{
private PsgrContext _context;
public Task Execute(IJobExecutionContext context)
{
return Task.Run(() =>
{
var q = _context.Photos(); //Тут уже работать с контекстом
Console.WriteLine("Execute");
});
}
public LoaderJob()
{
_context = new PsgrContext();
Console.WriteLine("Ctor Test");
}
}
Но к сожалению, такой код:
NameValueCollection props = new NameValueCollection
{
{"quartz.serializer.type", "binary"}
};
StdSchedulerFactory factory = new StdSchedulerFactory(props);
IScheduler scheduler = await factory.GetScheduler();
// and start it off
await scheduler.Start();
// define the job and tie it to our HelloJob class
IJobDetail job1 = JobBuilder.Create<LoaderJob>()
.WithIdentity("job1", "group1")
.Build();
// Trigger the job to run now, and then repeat every 10 seconds
ITrigger trigger1 = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.StartNow()
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(1)
.RepeatForever())
.Build();
// Tell quartz to schedule the job using our trigger
var jobs = new Dictionary<IJobDetail, IReadOnlyCollection<ITrigger>>();
jobs[job1] = new [] {trigger1};
await scheduler.ScheduleJobs(jobs, true);
Вернет такой вывод:
Ctor Test
Execute
Ctor Test
Execute
Ctor Test
Execute
Ctor Test
Execute
Ctor Test
Execute
Ctor Test
Execute
Я могу передать _context
в качестве параметров джобы, или использовать статические поля. Но это все не потокобезопасно.
А т.к. работа с базой из разных контекстов потокобезопасна, лучшим решением было бы проинициализировать контекст внутри джобы. Но как это сделать, я не знаю.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть класс Options с несколькими листиками и другой класс Form1Создан экземпляр класса Options в классе Form1
Нужно связать фильм и пользователей, которые его смотрелиДумал насчет того, чтобы сделать связь "один ко многим" по id пользователей, но не уверен,...
Не работает миграция в laravel с СУБД Попытки найти самостоятельно причину не увенчались успехом , жду помощи или подсказок от всех желающих