Ich arbeite an einer App, die eine Menge neuer Objekte (Zeilen) und Beziehungen zwischen ihnen einfügt. Aber an einem bestimmten Punkt, an dem ein Fehler auftritt, möchte ich, dass alle Änderungen am DataContext entsorgt und "weggeworfen" werden. Nach einem Fehler habe ich eine saubere Kopie des DataContext, die dem Zustand der Datenbank entspricht.Wie rolle ich den Datenkontext an den Punkt der letzten Submitchanges zurück
2
A
Antwort
1
bearbeiten
Alternativ können Sie die Verwendung des DataContext.Transaction machen, und verwenden, die auf .Commit()
oder .Rollback()
Ihre Änderungen.
ORIG
Werfen Sie einfach weg, dass Datacontext & es Re-instanziiert. wie
Etwas ...
public void MyMethod(string connStr)
{
try
{
DataClasses1DataContext dc = new DataClasses1DataContext(connStr);
for (int i = 0; i < 100; i++)
{
try
{
//Do Stuff
//Insert Objects
dc.SubmitChanges();
}
catch (Exception ex) //So if it bombs in the loop, log your exception
{
Log(ex);
}
finally //Reinstantiate your DC
{
dc = new DataClasses1DataContext(connStr);
}
}
}
catch (Exception bigEx)
{
Log(bigEx);
}
}
1
Sie könnten auch die Transaction in einer using-Anweisung verwenden. Wenn Sie für das TransactionScope .Complete() nicht aufrufen, werden alle Änderungen zurückgesetzt, wenn sie entfernt werden (was beim Verlassen der using-Anweisung geschieht).