2009-05-15 4 views
2

私は、多くの新しいオブジェクト(行)とそれらの間の関係を挿入しているアプリケーションに取り組んでいます。しかし、エラーが発生した特定の時点で、私はDataContextへのすべての変更を無効にして "破棄"したいと考えています。そのため、エラーが発生した後、データベースの状態に一致するDataContextのクリーンコピーが作成されます。datacontextを最後のsubmitchangesのポイントにロールバックする方法

答えて

1

編集

また、あなたはDataContext.Transactionを利用して、そして.Commit()または.Rollback()変更にそれを使用することができます。ただ、DataContextの&がそれを再インスタンス化すること

ORIG

を捨てます。

のような何か...

public void MyMethod(string connStr) 
{ 
    try 
    { 
     DataClasses1DataContext dc = new DataClasses1DataContext(connStr); 
     for (int i = 0; i < 100; i++) 
     { 
      try 
      { 
       //Do Stuff 
       //Insert Objects 
       dc.SubmitChanges(); 
      } 
      catch (Exception ex) //So if it bombs in the loop, log your exception 
      { 
       Log(ex); 
      } 
      finally //Reinstantiate your DC 
      { 
       dc = new DataClasses1DataContext(connStr); 
      } 
     } 
    } 
    catch (Exception bigEx) 
    { 
     Log(bigEx); 
    } 
} 
1

はまた、usingステートメントでのTransactionScopeを使用することができます。 TransactionScopeで.Complete()を呼び出さないと、すべての変更が処理時にロールバックされます(usingステートメントを終了するときに発生します)。

関連する問題