2013-06-27 4 views
2

기본 생성자로 storegeneratedpattern = none으로 설정된 기본 키가있는 엔티티가 있습니다. 따라서 id 클라이언트 측을 제공합니다.storegeneratedpattern = none 인 Entity Framework 4 엔티티는 저장시 외래 키를 업데이트하지 않습니다.

이 엔티티에는 탐색 및 외부 키 ID와의 연관을 통해 다시 참조하는 하위 엔티티가 있습니다.

새 상위 엔티티를 작성하고 하위를 추가 한 후 상위 엔티티 기본 키를 설정하고 저장하면 하위에 대한 외래 키의 수정 사항이 저장 후 발생하고 데이터베이스에 유지되지 않습니다.

는 저장은 단순히 한 후

Context.Engines.AddObject(entity); 
Context.SaveChanges(); 

engine = new Engine(); 
    part = new Part(); 
    engine.Parts.Add(part); 
    engine.Id = 6; 
    engineRepository.Save(engine); 

입니다 예를 들어 저장 "부분을"외래 키 "engineID를"= 6이되지만 데이터베이스에는 "engineID를"입니다 = 0, 즉 저장 후 수정이 일어난 것처럼 보입니다.

무엇이 여기에 있습니까? 엔진 용 상점 생성 패턴이 신원이라면 모두 잘 작동합니다.

답변

0

이 경우 해상도는 한 번 에 두 번 그래프를 저장에게 수정까지 저장 에 한 번 수정 위로를 만드는 것이 될 것으로 보인다. 그것은 훌륭한 해결책이 아니며 여전히 우리가 왜해야하는지 이해하지 못합니다. 적어도 EF가 ID 해석을 처리하도록 할 수는 있습니다.

0

당신이 엔진을 위해 당신의 자신의 Id를 만들고 있다면, 당신도 그 부품을 위해 그것을 만들어야한다고 생각합니다.

engine = new Engine(); 
part = new Part(); 

part.engineid = 6 

engine.Parts.Add(part); 
engine.Id = 6; 
engineRepository.Save(engine); 
+0

그것은 하나의 가능성이지만 EF의 전체 자동 수정이 무효화됨을 의미합니다. 사실 우리는 거대한 그래프를 가지고 있으며 적절한 모든 ID를 설정하기 위해 모든 것을 수행해야합니다. 나는 우리가 결국 아래에서 사용했던 대답을 제공했다. –