Frage
Wie soll ich (unter Verwendung der Standard-Abhängigkeitsinjektion) eine DbContext
Instanz in eine Instanz injizieren IHostedService
?
Was habe ich versucht?
Ich lasse meine IHostedService
Klasse 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 Startup
Klasse.
Der Fehler bleibt jedoch derselbe, obwohl gemäß diesem gelösten Github-Problem die DbContextOptions
übergebene Lebensdauer dieselbe im AddDbContext
Aufruf 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).