Kann ich ein LINQ to SQL Update "rückgängig machen"?

9

Wenn ich in LINQ-to-SQL ein Objekt im Kontext aktualisiere, aber SubmitChanges nicht aufgerufen habe, gibt es eine Möglichkeit, das Update rückgängig zu machen oder aufzugeben, so dass die Änderungen nicht übermittelt werden, wenn ich schließlich SubmitChanges aufrufen werde ? Zum Beispiel, wenn ich mehrere Objekte aktualisiert habe und dann entscheide, dass ich die Änderungen an einem von ihnen vor dem Senden abbrechen möchte.

Teil 2: Gleiche Frage für Entity Framework, v3.5

    
Sisiutl 12.08.2010, 15:28
quelle

2 Antworten

2

Sowohl LINQ to SQL als auch Entity Framework verwenden denselben Aufruf (vorausgesetzt, Sie haben immer noch den aktiven Kontext):

%Vor%

Ein geeigneterer Weg wäre, den Kontext als eine Arbeitseinheit zu behandeln. In diesem Fall hätten Sie beim Aktualisieren des Objekts keinen aktiven Kontext mehr. Sie würden einfach das Objekt, das Sie gerade verwenden, entsorgen und eine neue Kopie aus einem neuen Kontext erhalten.

    
Justin Niessner 12.08.2010, 15:32
quelle
1

Ich denke, Sie können den .GetOriginalEntityState (yourEntity) verwenden, um die ursprünglichen Werte abzurufen. Dann setze deine aktualisierte Entity zurück auf das Original

%Vor%

Sehr Pseudo-Code, aber ich denke, es vermittelt die richtige Idee. Mit dieser Methode können Sie auch einfach eine oder mehrere Eigenschaftsänderungen rückgängig machen, ohne die gesamte Entität zu aktualisieren.

    
Tommy 12.08.2010 15:37
quelle

Tags und Links