0

厳密に型指定された DataSet の DataTable にいくつかの行を追加し、TableAdapterManager を使用して変更をデータベースに挿入します。TableAdapterManager の UpdateAll 関数を使用すると、挿入されたすべての行のデータベース ロールバックが失敗する場合があります。残念ながら、DataTable.RejectChanges は DataTable 内の同じ行を「ロールバック」しません。DataTable.RejectChanges メソッドの呼び出しでは、最後の行のみが DataTable から削除されます。DataSet をデータベースと同じステータスにしたい。
すべての新しい (コミットされていない) 行を削除する MSDN ドキュメントごとの RejectChanges ではありませんか? 私は何か間違ったことをしていますか?

私のコード:

foreach (var item in List)
{
   DataSet.customerRow custRow = ds.customer.NewcustomerRow();
   custRow.name = item.Name;
   try
   {                         
       ds.customer.AddcustomerRow(custRow);   
   }
   catch (Exception ex)
   {
       ProcessException(ex, System.Reflection.MethodBase.GetCurrentMethod().Name);
       valid=false;
   }                   
}
if (valid)
{
    DataSetTableAdapters.TableAdapterManager adapterManager = new DataSetTableAdapters.TableAdapterManager();                    
    adapterManager.customerTableAdapter = new DataSetTableAdapters.customerTableAdapter();                    
    try
    {                        
        retryPolicy.ExecuteAction(() =>
            {
            adapterManager.UpdateAll(ds);
            });
    }
    catch (Exception ex)
    {                       
        ds.customer.RejectChanges();
    }
}
else
{
    ds.customer.RejectChanges();                     
}      
4

1 に答える 1