2010-04-27 5 views
0

Entity Framework를 사용하여 mssql 데이터베이스에 삽입하는 데 약간 문제가 있습니다. 삽입하려는 두 개의 테이블이 있습니다. 여기서 테이블 1 필드 중 하나는 table2의 외래 키입니다. 엔티티 프레임 워크 : 일대일 참조로 삽입

내가 지금까지 가지고있는 코드 :

Media media = null; 
foreach(POI p in poiList) 
{ 
    media = new Media() 
    { 
     Path = p.ImagePath, 
     Title = p.Title 
    }; 

    if (media != null && !context.Media.Any(me => me.Title == p.ImageTitle)) 
    { 
     context.AddToMedia(media); 
     context.SaveChanges(); 
    } 

    PointOfInterest poi = new PointOfInterest() 
    { 
     Altitude = 2000.0, 
     ID = p.ID, 
     Latitude = p.Latitude, 
     Longitude = p.Longitude, 
     LatitudeRoute = p.LatitudeRoute, 
     LongitudeRoute = p.LongitudeRoute, 
     Description = p.Description, 
     Title = p.Title, 
     DefaultImageID = media.ID, 
    };  
    context.AddToPointOfInterest(poi); 
} 
context.SaveChanges(); 

다음은 나에게이 오류 제공 :

같은 키를 가진 개체가 이미 동일한 키를 사용하여 ObjectStateManagerAn 객체에 존재 이 이미 존재를 ObjectStateManager에서

나는 여전히 엔티티 프레임 워크를 사용하는 방법을 배우므로이 방법이 참조 된 두 테이블에 삽입하는 올바른 방법인지는 모르겠다.

누구든지 내게 이것을 밝힐 수 있습니까? :) 어떤 도움이라도 대단히 감사하겠습니다!

감사합니다.

+0

~ 40 개의 미디어 객체가 데이터베이스에 추가되고 context.AddToMedia() 메소드를 가리키면 오류가 발생합니다. – bomortensen

답변

0

오류의 의미입니다. 기본 키 위반이 있습니다. 주어진 키 값으로 Context.AddTo... 번만 전화 할 수 있습니다. 어떤 엔티티가 오류를 일으키는 지 파악하고 동일한 키가있는 컨텍스트의 다른 엔티티가 이미 있음을 알 수 있습니다.