【ADO.NET】DataSetから変更行を抽出
DataSetのGetChangesメソッドを使用すれば、
DataSetから変更行だけを抽出できます。
多階層アーキテクチャの場合にDataSetの全行を受け渡すと
システム間の転送量が多くなってしまい、性能に影響が出る場合があります。
そんな時、DataSet.GetChangesメソッドは役に立ちます。
例えば、更新ロジックの場合、以下のような使い方をすることになります。
PL層:DataSet.GetChangesで修正行のみを取得し、BL層に渡す。
BL層:受け取ったDataSetをDA層に渡す
DA層:受け取ったDataSetをxxxTableAdpater.Updateメソッドなどで更新。
ところで、xxxTableAdapter.Updateには更新後に最新の値を
DataSetに書き戻してくれる機能があります。
例えば、更新前に自動採番列に値が入っていなかったとしても、
更新後に自動採番された値をDataSetに書き戻してくれたりします。
更新後の値を全行格納されたDataSetに反映したい場合には、
DataSet.Mergeメソッドを使用すればOKです。
主キーが同じ行に対して最新の値を上書きすることができます。
(主キーがDataSetに設定されていることが前提ですが。)
dataSet1.Merge(dataSet2)
上記のように書けば、dataSet1にdataSet2の値をマージしてくれます。
【参考文献】