2009-10-28 8 views
10

私はLinqのデータをSQLに送信するためにTransactionScopeを使用しています。私の質問は、複数のSubmitChangesを同じスコープで使用すると、エラーが発生した場合はすべてのスコープがロールバックされるか、最後のSubmitChangesの後に変更が加えられただけでしょうか?例:LinqからSQLへの複数のSubmitChangesとトランザクションロールバック

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){} 
    } 
} 

もし、SubmitChangesが例外をスローすると、SubmitChangesもロールバックされますか?

+2

この類似の質問を確認してください - http://stackoverflow.com/questions/542525/transactionscope-vs-transaction-in-linq2sql - 特に、最初の答え –

答えて

8

すべての変更は、最後のSubmitChanges()のものだけでなく、ロールバックされます。

このパターンは、他のデータに依存するデータがある場合(オブジェクトを作成して自動生成されたIDを取得する必要がある場合など)に使用する必要があることがよくあります1つのSubmitChangesはオブジェクトを作成するだけでほとんどのシナリオで呼び出されますが、私は逸脱します...)。

関連する問題