更新中のDataSetにデータベース登録結果を反映する方法

  非接続型データの DataSet で、変更部分のみ抽出したDataSet でデータベースの更新処理を行った場合、その更新結果を更新中のDataSet に反映させる必要があります。その場合は、以下の方法で行います。
 【前提】
 非接続型データの DataSet の各DataTableのキー列は自動インクリメントされるID番号が設定されているものとし、新規追加時にはユニークな番号が設定されるものとします。
【サンプル C#】
///
///  更新中のDataSetに更新完了結果をマージします。
///   (マージ処理後、更新元の新規追加行を削除します。)
///
/// param name="dsBase":元となるDataSet
/// param name="dsNew":更新するDataSet
public void DataSetMerge( DataSet dsBase, DataSet dsNew )
{
    //Debug.WriteLine("DataSetMerge:開始");

    // 追加分を含む更新情報を旧データに反映
    dsBase.Merge(dsNew);

    // 重複を避ける為に元データの新規追加分を削除(キーIndex番号が仮番号である為)
    foreach ( DataTable tbl in dsBase.Tables )
    {
        // 追加ステータス行を抽出&削除
        foreach ( DataRow drBase in tbl.Select( null, null, DataViewRowState.Added))
        {
            // 追加ステータス行を削除
            tbl.Rows.Remove(drBase);
        }
    }

    // 更新を確定し、ステータスをクリア
    dsBase.AcceptChanges();

    //Debug.WriteLine("DataSetMerge:終了");
}
【補足】
 ローカルでの新規追加時に独自性を確保する為、キー列には以下の例ような設定を行います。(col:キー列DataColumn)
    col.AutoIncrement = true;    //自動インクリメントさせる
    col.AutoIncrementSeed = -1;  //初期値-1
    col.AutoIncrementStep = -1;  //増分値-1
戻る