2012-04-29 26 views
0

我的代碼結構類似:EF 4.3:無法使用查找並當在同一範圍內

var adjective = context.Adjectives.Find(11); //works 
var substantive = context.Substantives.Find(11); //works  
var address = context.Addresses.Where(v => v.ZipCode == new_possible_address.ZipCode).SingleOrDefault(); //works  

var name = context.Names.Find(91); //doesn't work 

最後一行顯示錯誤消息:

「屬性「標識'是對象的關鍵信息的一部分,不能修改。「 」。

我注意到,如果我刪除Where語句,最後一個Find方法工作。所以:

var adjective = context.Adjectives.Find(11); //works 
var substantive = context.Substantives.Find(11); //works  

var name = context.Names.Find(91); //now works 

另外,如果我使用調試功能「設置下一步聲明」將形容詞或實質性線「Addresses.Where」行執行之後。這兩種方法也停止工作。

爲什麼我不能在相同的上下文中使用Find和Where方法?

+0

在另一臺計算機上測試,或格式化硬盤,重新安裝OS,.NET,Visual Studio,EF,重新編譯解決方案......這個錯誤只是瘋狂的...... – Slauma

+0

不只是瘋了:地獄狗屎! –

回答

0

這是一個模型問題。我必須完成的導航地圖這樣的:

modelBuilder.Entity<People>().HasOptional(c => c.Address).WithMany(); 

我需要的只是這樣。