2012-09-18 2 views

답변

1
도와주세요 내 코드

CheckListTrack CheckListtrack = new CheckListTrack(); 
trackId = entityCollection.WorkItemTrack.Max(p => p.TrackID) ; 
foreach (int ListID in tracklist) 
{ 
    CheckListtrack.WorkItemTrackReference.EntityKey = new EntityKey("SEIESSEntities.WorkItemTrack", "TrackID", trackId); // foreign key 

    CheckListtrack.CheckListReference.EntityKey = new EntityKey("SEIESSEntities.CheckList", "CheckListID", ListID);  // foreign key 

    entityCollection.AddToCheckListTrack(CheckListtrack); // error comes after second time control passes here 

    } 
    curentScope.Complete(); 
    success = true; 

말한다 제공

실수는 엔티티 컬렉션에 더 많은 시간 동안 같은 엔티티를 넣었다는 것입니다. foreach 루프 내에서 새 CheckListTrack() 엔터티를 만들어야합니다. CheckListTrack에는 기본 키 자동 증가가있는 것으로 보입니까?

+0

예 CheckListTrack에는 자체 PK가 있고 자동 증가 – Somashekhar

+0

이 분명합니다. EF에서는 모든 개체에 대해 새 엔터티에 대한 새 인스턴스를 추가해야합니다. 그렇지 않으면 루프에서 외래 키를 간단히 변경하지만 동일한 참조를 다시 추가하십시오. 이것에 의해, 중복 키 예외가 발생합니다. 그 사이에 SaveChanges를 호출하지 않았던 경우는 0이됩니다. EntityCollection에서 중복 키를 허용하지 않습니다. – JanW

관련 문제