2010-02-06 2 views
0

두 개의 fk가있는 엔티티가 있습니다. 난 성공하지 않고 데이터베이스에 레코드를 삽입하려고했습니다. 이것은 내가 사용했던 방법입니다 : 두 번째 객체가 할당됩니다이 경우다시 Entity Framework 및 FK 문제

valuePaymentBetToAdd.BetType = db.BetTypes.First(betType => betType.Id == valuePaymentBetToAdd.BetType.Id); 
    valuePaymentBetToAdd.Lottery = db.Lotteries.First(lotto => lotto.Id == valuePaymentBetToAdd.Lottery.Id); 

하지만 SaveChanges를 메서드를 호출 할 때 나는 복권 개체의 속성이 null이었다 없다는 오류가 발생합니다.

valuePaymentBetToAdd.BetTypeReference.EntityKey = new EntityKey(db.DefaultContainerName + ".BetType", "Id", valuePaymentBetToAdd.BetType.Id); 
    valuePaymentBetToAdd.LotteryReference.EntityKey = new EntityKey(db.DefaultContainerName + ".Lottery", "Id", valuePaymentBetToAdd.Lottery.Id); 

이 경우 다른 이상한 오류가 발생합니다. 개체가 컬렉션에 추가 될 때.

해당 개체의 EntityReference에이 개체의 EntityKey와 일치하지 않는 EntityKey 속성 값이 있으므로 개체를 추가하거나 연결할 수 없습니다.

이 경우 뭔가가 누락 되었습니까?

+0

당신이 아니라 두 라인을 삽입하는 데 사용하는 전체 코드를 보여주십시오 위해

valuePaymentBetToAdd.BetTypeReference.EntityKey = b.BetTypes.First(betType => betType.Id == valuePaymentBetToAdd.BetType.Id).EntityKey; 

그것은 작동합니다. 두 가지 방법 모두 괜찮습니다. 귀하의 버그는 다른 곳에 있습니다. 내 생각에 여러 ObjectContext를 사용하고 있지만 코드를 보지 않고도 말하기는 어렵습니다. –

답변

0

봅니다 : 나를

+0

이미 시도했습니다. 같은 오류가 발생합니다. –

0

방법 만 Id 속성을 설정 곳 BetType 및 복권에 대한 스텁 객체를 생성 한 다음 각각의 EntitySets에 그를 부착 한 다음에 베팅 객체를 이러한 개체를 설정하고 저장에 대한 - 같은 :

을 이 같은의 EntityReference을 설정
Lottery lottery = new Lottery() { Id = valuePaymentBetToAdd.Lottery.Id }; 
BetType betType = new BetType() { Id = valuePaymentBetToAdd.BetType.Id }; 

MyContext.AttachTo("Lottery", lottery); 
MyContext.AttachTo("BetType", betType); 

valuePaymentBetToAdd.Lottery = lottery; 
valuePaymentBetToAdd.BetType = betType; 

MyContext.AddToBet(valuePaymentBetToAdd); 
MyContext.SaveChanges(); 
+0

첨부 할 때 테이블에 새 행을 삽입하는 것 같습니다. –

관련 문제