2010-02-06 64 views
0

我有一個實體有兩個fk's。我一直試圖向數據庫插入一條記錄而沒有成功。這是我所使用的方法:第二個對象被分配又是實體框架和FK問題

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

在這種情況下,但在調用SaveChanges方法時,我得到一個錯誤,指出彩民對象的屬性都爲空的。

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

請出示你使用插入,而不只是這兩行的全部代碼。你展示的兩種方法都很好。你的bug在別的地方。我瘋狂的猜測是你使用了多個ObjectContexts,但是很難說沒有看到代碼。 – 2010-02-08 14:30:29

回答

0

嘗試設置的EntityReference這樣的:

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

它爲我

+0

已經嘗試過。我犯了同樣的錯誤。 – 2010-02-06 22:48:30

0

怎麼樣在BetType和彩票創建存根對象,其中僅設置ID屬性,然後安裝這些各自EntitySets,然後下注對象,你設置這些對象,並保存 - 是這樣的:

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

當我附上這個,它似乎試圖在表上插入一個新的行。 – 2010-02-07 18:05:43