2013-04-25 10 views
10

sto vivendo questo comportamento strano in cui l'operazione viene commesso solo quando i using uscite e non al momento della chiamata scope.Complete();TransactionScope Complete() non commette la transazione prima di uscire l'istruzione USING

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

Come mi impegno la transazione prima di uscire dalla dichiarazione using?

+1

Transaction committable è l'unica operazione che fornisce opzioni per commettere o rollback http://msdn.microsoft.com/en-us/library/system.transactions.committabletransaction.aspx – Sankara

risposta

10

dal documentation:

L'attuale lavoro di impegnarsi tra le risorse direttore accade al End Using economico se l'oggetto TransactionScope creato la transazione.

Quindi non sembra che sia possibile eseguire il commit della transazione prima che l'istruzione using termini.

+1

Il motivo principale è che potrebbe essere nidificato all'interno di un altro ambito, quindi tutto quello che stai dicendo è che "il mio lavoro qui sembra buono", ma un errore in seguito potrebbe ancora voler tornare indietro se facesse parte di un'operazione più ampia. –