J'essaie d'utiliser SqlBulkCopy pour insérer de nouvelles lignes dans ma table DB en remplissant manuellement un DataTable w/dans mon application.SqlBulkCopy dans la table avec la clé primaire composite
Cela fonctionne bien pour toutes les tables sauf la table qui a une clé primaire composite constitué de 3 colonnes. Chaque fois que j'essaie de SqlBulkCopy quoi que ce soit dans cette table, je reçois l'erreur suivante:
Violation of PRIMARY KEY constraint 'PK_MYCOMPOSITEKEY'. Cannot insert duplicate key in object 'dbo.MyTable'.
The statement has been terminated.
Est-ce même possible?
J'ai essayé d'installer mes clés primaires de DataTable avec les éléments suivants:
dt.PrimaryKey = new[] {dt.Columns["PKcolumn1"], dt.Columns["PKcolumn2"], dt.Columns["PKcolumn3"]};
mais encore une fois, pas de chance.
C'est ce que je pensais aussi. Cependant, j'ai limité l'insertion à une seule ligne de valeurs que je ** sais ** ne sont pas encore dans la table de base de données. – kamens
La base de données pense qu'ils sont - quelles sont les valeurs? – Mark
Vous et Majkara avez raison. J'utilise Linq-to-SQL, et une dépendance de clé étrangère a été parcourue pendant DB.SubmitChanges() qui a inséré ces lignes étrangères devant le SqlBulkCopy dans mon chemin d'exécution ... même si je n'avais pas explicitement ajouté les lignes se. – kamens