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