SqlBulkCopy與標識列一起插入

c# identity-insert sqlbulkcopy sql-server

我正在使用SqlBulkCopy對象將數百萬個生成的行插入到數據庫中。唯一的問題是我插入的表有一個標識列。我已經嘗試將SqlBulkCopyOptions設置為SqlBulkCopyOptions.KeepIdentity並將identity列設置為0DbNull.Valuenull 。其中沒有一個有效。我覺得我錯過了一些非常簡單的事情,如果有人能夠啟發我會很棒。謝謝!

編輯為了澄清,我沒有在我導入的DataTable設置的標識值。我希望它們作為導入的一部分生成。

編輯2這是我用來創建基本SqlBulkCopy對象的代碼。

SqlBulkCopy sbc = GetBulkCopy(SqlBulkCopyOptions.KeepIdentity);
sbc.DestinationTableName = LOOKUP_TABLE;

private static SqlBulkCopy GetBulkCopy(SqlBulkCopyOptions options = 
    SqlBulkCopyOptions.Default) 
{
    Configuration cfg = WebConfigurationManager.OpenWebConfiguration("/RSWifi");
    string connString =
    cfg.ConnectionStrings.ConnectionStrings["WifiData"].ConnectionString;
    return new SqlBulkCopy(connString, options);
}

一般承認的答案

要使目標表分配標識,請不要使用SqlBulkCopyOptions.KeepIdentity選項。相反,不要映射來自源的標識,也不要從源中提取它以發送到SqlBulkCopy


熱門答案

填寫ColumnMapping中的BulkCopy對象,並沒有映射標識列。標識列將由目標數據庫生成。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因