Ich führe einen Korrekturcode aus, der über einen großen Stapel von Entitäten läuft, während seine Geschwindigkeit abnimmt. Dies liegt daran, dass die Anzahl der verfolgten Entitäten im Kontext mit jeder Iteration zunimmt. Es kann lange dauern, sodass ich am Ende Änderungen speichere jeder Iteration. Jede Iteration ist unabhängig und ändert die zuvor geladenen Entitäten nicht.
Ich weiß, dass ich die Änderungsverfolgung deaktivieren kann, möchte dies aber nicht, da es sich nicht um einen Masseneinfügecode handelt, sondern um das Laden der Entitäten und das Berechnen einiger Dinge. Wenn die Zahlen nicht korrekt sind, setzen Sie die neuen Zahlen und aktualisieren / löschen / erstellen einige zusätzliche Entitäten. Ich weiß, dass ich für jede Iteration einen neuen DbContext erstellen kann, und das würde wahrscheinlich schneller laufen als alle in derselben Instanz, aber ich denke, dass es einen besseren Weg geben könnte.
Die Frage ist also: Gibt es eine Möglichkeit, die zuvor im Datenbankkontext geladenen Entitäten zu löschen?
context.Entry(entity).State = EntityState.Detached
und die Verfolgung dieser bestimmten Entität wird beendet.