2009-12-29 5 views
2

Person (Id, CategoryId) 및 Category (Id) 엔티티가 2 개 있습니다.Linq to 엔티티 삽입 EF 1

이제 Id 및 CategoryId 만 사용하여 새 Person을 삽입하려고하면 Category와 관계가있는 사람에 대한 예외가 발생합니다.

다음 코드는 작동하지 않습니다

Person newPerson = new Person(); 
newPerson.Id = 1; 
newPerson.CategoryId = 1; 
context.AddToPersonSet(newPerson); 
context.SaveChanges 

이 코드는 카테고리 엔티티를 가져올 필요없이 삽입하는 또 다른 방법이 있나요

Person newPerson = new Person(); 
newPerson.Id = 1; 
newPerson.Category = context.CategorySet.Where(cat=> cat.Id == 1).First(); 
newPerson.CategoryId = 1; 
context.AddToPersonSet(newPerson); 
context.SaveChanges 

작동?

+0

좀 더 구체적으로 기재 할 수 있습니까? 정확히 첫 번째 예제에서 작동하지 않는 것은 무엇입니까? –

+0

ID 값이 1 인 범주 테이블에 행이 있습니까? –

+0

예, 데이터베이스에 존재합니다. 첫 번째 예제에서 updateexception을 throw합니다. 'Myentity.PersonSet'의 엔터티가 'FK_Persons_Category'관계에 참여합니다. 0 관련 '카테고리'를 찾았습니다. 1 '범주'가 필요합니다. – pdiddy

답변

2

FK 연관이있는 EF 4에서 첫 번째 코드는 "잘 작동"할 것이므로 EF 1을 사용한다고 가정 할 것입니다. EF 1

해결 방법은 다음과 같습니다 당신은 Person.CategoryId 그것은 심지어 Person 유형의 일부가 될 수 없습니다해야 EF 1. 모든에 매핑이 안

Person newPerson = new Person(); 
newPerson.Id = 1; 
// substitute the correct strings for your mapping. 
newPerson.CategoryReference.EntityKey = 
    new EntityKey("MyEntities.Categories", "CategoryId", 1); 
context.AddToPersonSet(newPerson); 
context.SaveChanges(); 

.

분명히, 가장 좋은 해결책은 EF 4를 사용하는 것입니다. 그러나 이것이 옵션이 아니면 위의 사항은 정상적으로 작동합니다.

+0

고마워, 나는 이것을 시도 할 것이다. – pdiddy