Das Problem:
Wenn Sie mit Entity Framework arbeiten, können Sie diesen frustrierenden Fehler begegnen: "The ObjectContext instance has been disposed and can no longer be used for operations that require a connection."
Dies geschieht normalerweise, wenn fauler Laden mit einem DBContext verwendet wird, der bereits geschlossen wurde.
Faulheit und eifriges Laden verstehen:
Entity Framework bietet zwei Ansätze zum Laden von verwandten Daten:
Warum der Fehler auftritt:
Der Fehler entsteht, weil der DbContext
(normalerweise innerhalb einer using
-Anweisung) vor auf die faul beladenen Navigationseigenschaften zugegriffen wird. Nach der Entsorgung wird die Verbindung geschlossen, wodurch weitere Datenbankvorgänge verhindern.
Die Lösung: Ladung anwenden
Die effektivste Lösung besteht darin, auf die eifrige Belastung umzusteigen. Anstatt Entity -Framework -Ladedaten zu Bedarf zuzulassen, fügen Sie diese ausdrücklich in Ihre Erstabfrage mit der Include
-Methode auf:
<code class="language-csharp">IQueryable<memberloan> query = db.MemberLoans.Include(m => m.Membership);</code>
Membership
Diese Zeile stellt sicher, dass die Eigenschaft vor vor DbContext
entsorgt wird, wodurch die Ausnahme verhindert wird. Denken Sie daran, memberloan
und Membership
durch Ihre tatsächlichen Entitäts- und Eigenschaftsnamen zu ersetzen. Für mehrere verwandte Entitäten ketten mehrere Include
Anrufe.
Dieser proaktive Ansatz garantiert, dass alle erforderlichen Daten im Rahmen des DbContext
abgerufen werden, wodurch der "entsorgte" Fehler beseitigt wird und einen reibungslosen Betrieb gewährleistet.
Das obige ist der detaillierte Inhalt vonSo beheben Sie 'Die ObjectContext -Instanz wurde entsorgt' Fehler im Entity -Framework?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!