SqlBulkCopy進入具有復合主鍵的表

.net c# sql sqlbulkcopy sql-server-2005

我正在嘗試使用SqlBulkCopy通過在我的應用程序中手動填充DataTable將新行插入到我的數據庫表中。

這適用於所有表, 但具有由3列組成的複合主鍵的除外 。每當我嘗試將SqlBulkCopy任何內容放入此表時,我都會收到以下錯誤:

Violation of PRIMARY KEY constraint 'PK_MYCOMPOSITEKEY'. Cannot insert duplicate key in object 'dbo.MyTable'.
The statement has been terminated.

這有可能嗎?

我嘗試使用以下方法設置DataTable的主鍵:

dt.PrimaryKey = new[] {dt.Columns["PKcolumn1"], dt.Columns["PKcolumn2"], dt.Columns["PKcolumn3"]};

但又一次,沒有運氣。

一般承認的答案

你遇到的問題是數據。

在輸入文件中有一個或兩個

在表中已有的e pk列中具有相同數據的行

要么

該文件至少有兩行具有相同的pk列值


熱門答案

在點擊數據庫之前,您應該驗證批量的批量數據,問題也可能存在(不只是與現有約束髮生衝突,或者在數據庫中記錄)。它確實有效,通常報告它是正確的。

儘管如此,DataSet甚至DataReader的整個展示都是一個混亂的映射練習,糟糕的無類型設計,大量不必要的轉換,分配,基於對象[]的值,整個事物變成了順序,類型和字符串相關的混亂(只有MS的東西)可以設計和保持設計)。另一方面,原生OLEDB批量接口更清潔。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow