2013-05-03 36 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

是不是用於此目的的唯一標誌?我的理解是,對於合併,它將基於主鍵合併行。