2013-04-25 1 views
10

ich dieses seltsame Verhalten erlebe, wo die Transaktion nur begangen wird, wenn die using Ausgänge und nicht beim Aufruf scope.Complete();Transaction Complete() nicht die Transaktion verpflichten, bevor die Anweisung using Verlassen

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew)) 
     { 
     scope.Complete(); 
      // data still doesn't show in db 
     } 
     // now shows in db 

Wie kann ich begehen die Transaktion vor dem Beenden der using Anweisung?

+1

Commitable Transaction ist die einzige Transaktion, die Optionen zum Festschreiben oder Rollback bietet. Http://msdn.microsoft.com/en-us/library/system.transactions.committabletransaction.aspx – Sankara

Antwort

10

vom documentation:

Die eigentliche Arbeit von Commit zwischen den Ressourcen-Manager bei der End geschieht Mit Anweisung, wenn das Objekt Transaction die Transaktion erstellt.

Es sieht also nicht so aus, als könnten Sie die Transaktion vor dem Ende der using-Anweisung wirklich festschreiben.

+1

Der Hauptgrund ist, dass es möglicherweise innen verschachtelt ist von einem anderen Bereich, also alles, was Sie sagen, ist, dass "meine Arbeit hier gut aussieht", aber ein Fehler später könnte es immer noch zurückrollen, wenn es Teil einer größeren Operation war. –

Verwandte Themen