2013-05-03 59 views
0

我正在尝试合并两个DataTable s--一个表示当前数据,另一个表示对该数据的插入提议。DataTable合并将重复PK视为更新而不是错误

这些表具有相同的模式,都使用简单的用户提供的主键字符串。

我想是,如果建议的插入行有一个已经存在于当前数据中的键,应该抛出一个错误。但是,建议的添加只是作为对现有行的建议更改合并,即而不是我想要的。

我当前的代码是沿

currentData.EnforceConstraints = false; 
currentData.Merge(additions); 
currentData.EnforceConstraints = true; 

在那里我居然合并全DataSet S,而不仅仅是DataTable S中的行的东西。我希望在EnforceConstraints = true行发现错误,但我没有。

我也尝试使用diffgrams,但有同样的问题 - 重复插入被视为修改。

有没有办法一组插入合并成一个DataSet并重复的PK被视为错误而非更新


同样,由于修改DataRow铭记其原始值,我倒是希望合并一个修改后的行其原始值不匹配的目标行的当前值会抛出异常了。

+0

您是否检查过您的PK字段是否真的作为暴露给数据表的主键字段? – Kai 2013-05-03 13:25:14

+0

我只是重复检查,是的,它是源和附加表的'PrimaryKey'。 (也许如果我暂时关闭它,它将不会通过键合并值,然后我可以重新打开并获得一个例外。) – Rawling 2013-05-03 13:30:09

+0

“确保键是主键而不仅仅是一个键。在我注意到我忘记在数据表设计器中勾选“主键”复选框之前几个小时,一旦我检查了它,我的合并就完美了。“ – Joe 2013-05-03 15:05:41

回答

0

是不是用于此目的的唯一标志?我的理解是,对于合并,它将基于主键合并行。