次の様なコーディングの場合、(C)のComplete()メソッドまでたどり着けば何の問題もないのですが、
何かエラーが発生して(B)でreturnし、(C)のComplete()メソッドまでたどり着かなかった場合、
Complete()メソッドが処理されないままusingステートメントブロックを抜ける事になるので、
(A)のUpdate()メソッドによるデータベースに対する更新処理はロールバックされる。
この時、(A)のUpdate()メソッドによって、DataSet.MYTABLE[0].RowStateは、
「Modified」->「Unchanged」になったまま。
DataSet.MYTABLE[0].SetModified();
TransactionScope transaction = new TransactionScope();
using (transaction)
{
TableAdapter.Update(DataSet.MYTABLE); // (A)
if (NanikaErrorHassei) // NanikaErrorHassei : bool型
{
return; // (B)
}
transaction.Complete(); // (C)
}
そこで、本題なのですが、Update()メソッドによって、「Unchanged」になったRowStateは
どの様に元にもどすのでしょうか?
自力で戻すしかないのでしょうか?
宜しくお願い致します。