Heim >Backend-Entwicklung >C++ >Wie kann der Fehler „Ein zweiter Vorgang wurde in diesem Kontext gestartet, bevor ein vorheriger Vorgang abgeschlossen wurde' von Entity Framework Core behoben werden?
Entity Framework Core-Fehler: „Ein zweiter Vorgang wurde in diesem Kontext gestartet, bevor ein vorheriger Vorgang abgeschlossen wurde“
Beim Arbeiten mit Entity Framework Core innerhalb Wenn Sie eine ASP.Net Core 2.0-Anwendung verwenden, stoßen Sie möglicherweise auf eine „InvalidOperationException“, die besagt, dass vor einer vorherigen Operation eine zweite Operation im Kontext gestartet wurde abgeschlossen.
Ursachen und Lösungen:
Die zugrunde liegende Ursache dieses Fehlers ist, dass die Kontextimplementierung von Entity Framework Core nicht threadsicher ist. Um dieses Problem zu beheben, stellen Sie sicher, dass Sie Ihren DbContext in Ihrer Abhängigkeitsinjektionskonfiguration als Transient registrieren:
services.AddDbContext<MyContext>(ServiceLifetime.Transient);
Alternativ können Sie den Kontext direkt als Transient registrieren:
services.AddTransient<MyContext>();
Vermeiden Sie die Registrierung des Kontexts als Geltungsbereich:
services.AddDbContext<MyContext>();
Zusätzliche Überlegungen:
Transiente Abhängigkeit verstehen:
Das Hinzufügen des Kontexts als transient bedeutet, dass jedes Mal, wenn der Kontext angefordert wird, eine neue Instanz erstellt wird. Dies verhindert Thread-Sicherheitsprobleme, schränkt aber auch die Möglichkeit ein, Änderungen an Entitäten über mehrere Klassen hinweg vorzunehmen.
Das obige ist der detaillierte Inhalt vonWie kann der Fehler „Ein zweiter Vorgang wurde in diesem Kontext gestartet, bevor ein vorheriger Vorgang abgeschlossen wurde' von Entity Framework Core behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!