SqlBulkCopy Einfügen mit Identitätsspalte

c# identity-insert sqlbulkcopy sql-server

Frage

Ich verwende das SqlBulkCopy Objekt, um einige Millionen generierte Zeilen in eine Datenbank einzufügen. Das einzige Problem ist, dass die Tabelle, die ich einfüge, eine Identitätsspalte hat. Ich habe versucht, die SqlBulkCopyOptions auf SqlBulkCopyOptions zu SqlBulkCopyOptions.KeepIdentity und die Identitätsspalte auf 0 , DbNull.Value und null . Keine von denen hat funktioniert. Ich habe das Gefühl, dass mir etwas ziemlich Einfaches fehlt, wenn mich jemand aufklären könnte, wäre das fantastisch. Vielen Dank!

Bearbeiten Um zu verdeutlichen, habe ich nicht die Identitätswerte in der DataTable ich importiere. Ich möchte, dass sie als Teil des Imports generiert werden.

Edit 2 Hier ist der Code, den ich verwende, um das Basis- SqlBulkCopy Objekt zu erstellen.

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);
}

Akzeptierte Antwort

Damit die SqlBulkCopyOptions.KeepIdentity die Identität SqlBulkCopyOptions.KeepIdentity , verwenden Sie nicht die Option SqlBulkCopyOptions.KeepIdentity . SqlBulkCopy Sie die Identität stattdessen nicht der Quelle zu und extrahieren Sie sie nicht aus der Quelle, um sie an SqlBulkCopy zu senden.


Beliebte Antwort

Füllen Sie das ColumnMapping des BulkCopy Objekts und BulkCopy Sie die Identitätsspalte nicht zu. Die Identitätsspalte wird von der Zieldatenbank generiert.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow