Ich habe ApplyCurrentValues verwendet.
Aber verstehe nicht wirklich ApplyOriginalValues. Wie unterscheidet es sich von ApplyCurrentValues? Wann sollte ich es benutzen?
Ich habe die Dokumentation gelesen. Aber immer noch verwirrt.
Jede Entität, die aus der Datenbank geladen wird, behält zwei Sätze von Werten bei - Original (die von DB geladenen) und aktuell (die, die Sie ändern). Diese zwei Sätze werden in ObjectStateEntry
gehalten. Normalerweise folgt jedem Speichern das Akzeptieren von Änderungen, die aktuelle Werte annehmen und sie in ursprüngliche Werte schreiben. Wenn Sie wissen, dass Sie Änderungen an der Entität außerhalb von EF vorgenommen haben (z. B. durch Aufrufen der gespeicherten Prozedur mit gemeinsamer ADO.NET-EF), können Sie EF über diese Änderungen informieren, ohne die Entität mithilfe von ApplyOriginalValues
erneut zu laden. Ich denke, dass die Verwendung dieser Methode eher selten ist. Zum Beispiel habe ich ApplyOriginalValues
in diese Antwort verwendet .
Ich habe kürzlich die ApplyOrigalValues () -Methode zur Verwendung in einem Szenario für das Löschen oder logische Löschen verwendet.
Wir verwenden Entity Framework 4.1 und haben logische / weiche Löschungen implementiert, wenn der Kontext Änderungen speichert.
Der folgende Code prüft, ob die Entität gelöscht wurde, und prüft dann, ob die richtige Schnittstelle implementiert ist. Wenn dies der Fall ist, ändern wir den Entitätszustand von gelöscht in modifiziert und wenden die ursprünglichen Werte (entry.ApplyOriginalValues ()) an und setzen das gelöschte Flag.
%Vor%Ursprünglich hatten wir ein Problem, bei dem die Navigationseigenschaften beim logischen Löschen auf NULL oder leer gesetzt wurden. Die ObjectContext.DeleteObject () -Methode hat alle Navigationseigenschaften zum Löschen markiert, bevor das Context.SavingChanges () - Ereignis ausgelöst wurde. Beim Ändern des Status von "Gelöscht" in "Modifiziert" wurden die Eigenschaften des Fremdschlüssels weiterhin gelöscht. Ich habe versucht, einen Haken für die RevertDelete () -Methode zu finden (ILSpy ist sehr nützlich), aber ApplyOriginalValues () funktioniert.
Tags und Links entity-framework-4