2009-10-28 12 views
10

Sto utilizzando TransactionScope per inviare i dati in Linq a SQL. La mia domanda è, se utilizzo più SubmitChanges nello stesso scope, tutti gli ambiti verranno ripristinati in caso di un errore o solo delle modifiche apportate dopo l'ultimo SubmitChanges? Per esempio:Multiple SubmitChanges e rollback della transazione utilizzando Linq To SQL

using (TransactionScope trans = new TransactionScope()) 
{ 
    using (dbDataContext db = new dbDataContext()) 
    { 
     try 
     { 
      //do some insert 
      db.SubmitChanges(); 

      //do some updates 
      db.SubmitChanges(); 

      trans.Complete(); 
     } 
     catch(Exception ex){} 
    } 
} 

Se SubmitChanges aggiornamento genera un'eccezione, saranno i SubmitChanges inserimento rollback troppo?

+2

Dai un'occhiata a questa domanda simile: http://stackoverflow.com/questions/542525/transactionscope-vs-transaction-in-linq2sql - in particolare, la prima risposta –

risposta

8

TUTTE le modifiche verranno ripristinate, non solo quella delle ultime SubmitChanges().

Spesso è necessario utilizzare questo modello quando si dispone di dati che dipendono da altri dati, ad esempio se è necessario creare un oggetto e ottenere l'ID generato automaticamente per fare qualcos'altro (anche se L2SQL lo supporta con una chiamata SubmitChanges chiama nella maggior parte degli scenari semplicemente creando l'oggetto, ma sto divagando ...).

Problemi correlati