Вопрос
Как я должен вводить (используя стандартную инъекцию зависимостей) экземпляр DbContext
в IHostedService
?
Что я пробовал
В настоящее время у меня класс IHostedService
принимает экземпляр MainContext
(вывод из DbContext
) в конструкторе.
Когда я запускаю приложение, я получаю:
Нельзя использовать ограниченную службу "Microsoft.EntityFrameworkCore.DbContextOptions" из singleton "Microsoft.Extensions.Hosting.IHostedService".
Итак, я попытался сделать переходный период DbContextOptions
, указав:
services.AddDbContext<MainContext>(options =>
options.UseSqlite("Data Source=development.db"), ServiceLifetime.Transient);
в моем классе Startup
.
Но ошибка остается прежней, хотя, согласно эта решена проблема Github, переданный DbContextOptions
должен иметь такое же время жизни, указанное в вызов AddDbContext
.
Я не могу сделать контекст базы данных singleton, в противном случае одновременные вызовы к нему приведут к исключениям concurrency (из-за того, что контекст базы данных не гарантируется потоком).