2 つの をマージしようとしていますDataTable
。1 つは現在のデータを表し、もう 1 つはそのデータへの提案された挿入を表します。
これらのテーブルには同じスキーマがあり、どちらも単純なユーザー提供の主キー文字列を持ちます。
私が望むのは、提案された挿入行に現在のデータに既に存在するキーがある場合、エラーがスローされることです。ただし、提案された追加は、既存の行への提案された変更としてマージされるだけであり、これは私が望んでいるものではありません。
私の現在のコードは、
currentData.EnforceConstraints = false;
currentData.Merge(additions);
currentData.EnforceConstraints = true;
DataSet
ここで、実際にはs だけでなく s全体をマージしていDataTable
ます。行でエラーが発生することを望んでいましたEnforceConstraints = true
が、そうではありません。
diffgram も使用してみましたが、同じ問題がありました。重複した挿入は変更として扱われます。
一連の挿入を にマージし、DataSet
重複した PK をupdateではなくエラーとして処理する方法はありますか?
同様に、変更された DataRow
s は元の値を記憶しているため、元の値がターゲット行の現在の値と一致しない変更された行をマージすると、例外もスローされることを願っています。