Entity Framework Timeout: CommandTimeout richtig einstellen
Wenn Sie bei der Verwendung von Entity Framework (EF) auf ein Zeitlimit für den Funktionsimport stoßen (mehr als 30 Sekunden), ist es wichtig, die Schritte zum korrekten Festlegen des Befehls-Zeitlimits zu verstehen. Auch wenn das Hinzufügen von „Default Command Timeout=300000“ zur Verbindungszeichenfolge einfach und unkompliziert erscheint, gibt es bei diesem Ansatz in einigen Versionen von EF bekannte Fehler.
Um dieses Problem zu beheben, legen Sie CommandTimeout manuell direkt für das Kontextobjekt im Repository fest. Verwenden Sie in EF 4 und niedriger this.context.CommandTimeout = 180;
. Verwenden Sie in EF 5 ((IObjectContextAdapter)this.context).ObjectContext.CommandTimeout = 180;
. Verwenden Sie in EF 6 this.context.Database.CommandTimeout = 180;
. Verwenden Sie in EF Core 1.0 this.context.Database.SetCommandTimeout(180);
.
Durch direktes Festlegen des CommandTimeout stellen Sie sicher, dass der Timeout-Wert auf alle von diesem Kontext ausgeführten Abfragen angewendet wird. Es ist wichtig zu beachten, dass das Festlegen widersprüchlicher Timeout-Werte in der Verbindungszeichenfolge das manuell festgelegte CommandTimeout beeinträchtigen kann. Daher besteht die beste Vorgehensweise darin, den Timeout-Wert aus der Verbindungszeichenfolge zu entfernen.
Durch Befolgen dieser Schritte können Sie verhindern, dass EF bei der Verarbeitung großer Datensätze eine Zeitüberschreitung erleidet, und EF auch in Situationen effizient nutzen, die große Datenabrufvorgänge erfordern.
Das obige ist der detaillierte Inhalt vonWie kann ich Befehlszeitüberschreitungen im Entity Framework richtig festlegen, um Zeitüberschreitungen beim Funktionsimport zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!