2009-05-15 3 views
2

많은 새 객체 (행)와 그 사이의 관계를 삽입하는 앱을 만들고 있습니다. 하지만 어떤 시점에서 오류가 발생하면 DataContext에 대한 모든 변경 사항을 무시하고 "버려두어야"합니다. 그래서 오류가 나는 데이터베이스의 상태와 일치하는 DataContext의 깨끗한 복사본이 있습니다.datacontext를 마지막 submitchanges 지점으로 롤백하는 방법

답변

1

편집

또는, DataContext.Transaction의 사용을하고, .Commit() 또는 .Rollback() 변경에 그것을 사용할 수 있습니다.

ORIG

단지의 DataContext가 &를 다시 인스턴스화 것을 던져.

뭔가 같은 ...

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

은 또한 사용하여 문에서 TransactionScope에 사용할 수 있습니다. TransactionScope에서 .Complete()를 호출하지 않으면 모든 변경 사항이 삭제 될 때 롤백됩니다 (using 문을 종료 할 때 발생).

관련 문제