0

J'ai deux tables dans ma base de données «câble», «câble». Une clé composite existe sur la deuxième table pour deux champs id1, id2. id1 a plusieurs relations (sans association de clé étrangère) avec le 'cable_id' de la première table. Le point est que je n'utilise aucune association entre l'une des tables de ma base de données et aucun de mes champs clés primaires ne sera généré automatiquement.insertion de plusieurs entités pour une table ayant une clé composite et aucune spécification d'identité - structure d'entité rejetant une exception d'opération invalide

Quand j'ajouter des données dans les deux tables avec des valeurs de clé primaire donnant manuellement ...

cable newCable = new cable(); 
       newCable.cable_id = newId; 
       newCable.wireCount = 5; 

dbContext.Cables.Add(newCable); 
dbContext.SaveChanges(); 

for(i=0; i<cable.wireCount; i++) 
{ 
    cableWire newCableWire = new cableWire(); 
      newCableWire.id1 = newId; 
      newCableWire.id2 = newId + i + 1; 
    dbContext.CableWires.Add(newCableWire); 
} 
dbContext.SaveChanges(); 

quand j'appelle les savechanges après la boucle itération, il jette InvalidOperationException ... et voilà .....

enter image description here

Je ne sais pas ce qui va mal .... Bien que la clé composite (+ ID1 ID2) est différent pour deux enregistrements, il dit toujours ne peut pas insérer double valeurs de clé primaire pour le type d'entité ' câble ". Quelqu'un s'il vous plaît aidez-moi ce que je fais mal ..

Est-ce que je ne peux pas dupliquer une valeur de mon champ de clé composite explicitement? J'utilise Entity Framework 5

Répondre

1

Essayez de mettre dbContext.SaveChanges(); à l'intérieur de la boucle for.

+0

J'ai essayé ça aussi ... mais fini avec le même résultat ... –