0
2 개의 외래 키가있는 테이블이 있습니다. 나는 (외래 키) 중복 값을 삽입하려고 할 때 그것은 erroe는 "같은 키를 가진 항목이 이미 추가되었습니다"아래 같은 키를 가진 항목이 이미 Entity Framework에 추가되었습니다.
나에게2 개의 외래 키가있는 테이블이 있습니다. 나는 (외래 키) 중복 값을 삽입하려고 할 때 그것은 erroe는 "같은 키를 가진 항목이 이미 추가되었습니다"아래 같은 키를 가진 항목이 이미 Entity Framework에 추가되었습니다.
나에게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에는 기본 키 자동 증가가있는 것으로 보입니까?
예 CheckListTrack에는 자체 PK가 있고 자동 증가 – Somashekhar
이 분명합니다. EF에서는 모든 개체에 대해 새 엔터티에 대한 새 인스턴스를 추가해야합니다. 그렇지 않으면 루프에서 외래 키를 간단히 변경하지만 동일한 참조를 다시 추가하십시오. 이것에 의해, 중복 키 예외가 발생합니다. 그 사이에 SaveChanges를 호출하지 않았던 경우는 0이됩니다. EntityCollection에서 중복 키를 허용하지 않습니다. – JanW