2012-05-22 2 views
0

J'ai le code follwing:EF: clé en double sur insert

public bool AddLeaveFormApprovers(List<LeaveFormApprovers> listToAdd) 
{ 
    bool returnValue=false; 
    try 
    { 
     using (LeaveRegulationEntities db = new LeaveRegulationEntities(ConnectionStringHelper.GetConnectionString(DaConstants.LeaveRegulationEntities))) 
     { 
      foreach(LeaveFormApprovers approvers in listToAdd) 
      { 
       approvers.AssignedLeave = db.AssignedLeave 
        .FirstOrDefault(a => a.AssignedLeaveID == approvers.AssignedLeave.AssignedLeaveID); 
       approvers.LeaveFormApproverSys = db.LeaveFormApproverSys 
        .FirstOrDefault(a => a.LeaveFormApproverID == approvers.LeaveFormApproverSys.LeaveFormApproverID); 
       db.LeaveFormApprovers.AddObject(approvers); 
      }      
      db.SaveChanges(); 
     } 
     returnValue = true; 
    } 
    catch (Exception ex) 
    { 
     _Exceptions.ManageExceptions(ex); 
    } 
    return returnValue; 
} 

La liste des List<LeaveFormApprovers> est chargé d'un autre contexte que je reçois les objets dans le contexte actuel:

approvers.AssignedLeave = db.AssignedLeave 
    .FirstOrDefault(a => a.AssignedLeaveID == approvers.AssignedLeave.AssignedLeaveID); 
approvers.LeaveFormApproverSys = db.LeaveFormApproverSys 
    .FirstOrDefault(a => a.LeaveFormApproverID == approvers.LeaveFormApproverSys.LeaveFormApproverID); 

Je reçois l'erreur suivante:

Violation of PRIMARY KEY constraint 'PK_LeaveFor_B29C651847BE14B9'. Cannot insert duplicate key in object 'dbo.LeaveFormApproverSys'.

+0

Peut-être que vous vouliez [Attach] (http://stackoverflow.com/questions/3920111/entity-framework-4-addobject-vs-attach) approbateurs dans ce contexte? Et puis définir les propriétés? –

+0

quels approbateurs ?? – Mazen313

+0

'foreach (approbateurs LeaveFormApprovers dans listToAdd)' -> approbateurs. –

Répondre

0

Dans la requête qui génère APPE listToAdd try compris AsNoTracking(). Cela devrait empêcher EF de suivre l'entité et d'essayer de la réinsérer ultérieurement.

Questions connexes