Frage
Wie soll ich (unter Verwendung der Standard-Abhängigkeitsinjektion) eine DbContextInstanz in eine Instanz injizieren IHostedService?
Was habe ich versucht?
Ich lasse meine IHostedServiceKlasse derzeit eine MainContext(abgeleitete DbContext) Instanz im Konstruktor übernehmen.
Wenn ich die Anwendung starte, bekomme ich:
Der Scoped-Service 'Microsoft.EntityFrameworkCore.DbContextOptions' kann nicht vom Singleton 'Microsoft.Extensions.Hosting.IHostedService' verwendet werden.
Also habe ich versucht, den DbContextOptionsÜbergang durch Angabe von:
services.AddDbContext<MainContext>(options =>
options.UseSqlite("Data Source=development.db"), ServiceLifetime.Transient);
in meiner StartupKlasse.
Der Fehler bleibt jedoch derselbe, obwohl gemäß diesem gelösten Github-Problem die DbContextOptionsübergebene Lebensdauer dieselbe im AddDbContextAufruf angegebene Lebensdauer haben sollte .
Ich kann den Datenbankkontext nicht zu einem Singleton machen, da sonst gleichzeitige Aufrufe zu Parallelitätsausnahmen führen würden (da nicht garantiert wird, dass der Datenbankkontext threadsicher ist).