2 Stimmen

EF 4.1 Code First - mehrere Aufrufe von SaveChanges in einer Transaktion verpacken

Zu den hier beschriebenen Gründen muss ich mehrere Aufrufe von SaveChanges tätigen. Ich möchte, dass beide dieser Aufrufe in einer Transaktion verpackt sind (so dass, wenn der zweite Aufruf fehlschlägt, der erste Aufruf rückgängig gemacht wird). Zum Beispiel:

AccountsContext context = new AccountsContext(connectionString);

CountryNotes notes = new CountryNotes();
notes.Notes = "Erste Änderung";
context.SaveChanges();

notes.Notes = "Zweite Änderung";
context.SaveChanges();

Wie kann ich die oben genannten beiden SaveChanges-Aufrufe in einer einzelnen Transaktion durchführen?

Vielen Dank,

Paul.

2voto

Ladislav Mrnka Punkte 355028

Verwenden Sie TransactionScope:

using (var scope = new TransactionScope(TransactionScopeOption.Required, 
    new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted }))
{
    AccountsContext context = new AccountsContext(connectionString);

    CountryNotes notes = new CountryNotes();
    notes.Notes = "Erster Speichern";
    context.SaveChanges();

    notes.Notes = "Zweiter Speichern";
    context.SaveChanges();

    scope.Complete();
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X