In den letzten paar Tagen verzeichnen wir verschiedene Exceptions, die von Entity Framework (Version 6) auf unserer Live-Plattform geworfen werden, die nur gelegentlich auftreten und Fehlermeldungen, die alle auf die Datenbank bezogen sind Verbindung.Entity Framework: Verschiedene Verbindungsprobleme treten gelegentlich auf
Nicht Eigenschaft des 'Connectionstring' zu ändern erlaubt. Der aktuelle Zustand der Verbindung ist ist geschlossen.
Der Kontext kann nicht verwendet werden, während das Modell erstellt wird. Diese Ausnahme kann ausgelöst werden, wenn der Kontext in der OnModelCreating-Methode verwendet wird oder wenn auf die gleiche Kontextinstanz von gleichzeitig mehrere Threads zugegriffen wird. Beachten Sie, dass Instanzmitglieder von DbContext und zugehörigen Klassen nicht garantiert Thread-sicher sind.
Unerwarteter Verbindungsstatus. Wenn Sie einen Wrapping-Provider verwenden, stellen Sie sicher, dass das StateChange-Ereignis für die umgebrochene DbConnection implementiert ist ( ).
Der zugrunde liegende Provider ist bei Open fehlgeschlagen.
Wir können nicht vergessen, dass wir etwas und wie schon gesagt diese Fehler nur manchmal auftreten geändert haben. Wir können sie nicht auf lokaler Bühne reproduzieren.
Hat jemand eine Idee, was schief läuft oder wie zu untersuchen?
Bearbeiten: Es ist eine ASP.NET MVC 5-Anwendung, die Unity IoC für Instanziierung verwendet. Wir verwenden einen selbstgeschriebenen PerRequestLifeTimeManager, der in anderen mvc-Anwendungen absolut flüssig läuft.
Können Sie das Stück Code teilen, wo Sie diesen Fehler sehen? Konnten Sie ein Muster oder einen Anwendungsfall identifizieren, in dem der Fehler auftritt? Verfügen Sie über Anwendungsprotokolle, die angeben können, bei welcher Codezeile die Ausnahme ausgelöst wird? –
Ich bin mir ziemlich sicher, dass Sie Kontexte falsch verwenden. Wahrscheinlich als statische Mitglieder, aber sicher so, dass sie für mehrere Threads zugänglich sind. Refactoring Zeit! –
Es ist unmöglich, ohne Code zu sagen. Ich stimme jedoch @GertArnold zu. Sie sollten eine und nur eine Kontextinstanz pro Anfrage haben. Wenn Sie mehrere Instanzen pro Anfrage neu erstellen oder umgekehrt statisch oder als Singleton usw. verwenden, haben Sie Probleme. –