EF 4.3:不能在同一个上下文中使用Find和Where

时间:2012-04-29 22:17:18

标签: entity-framework-4 entity-framework-4.1

我有这样的代码结构:

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

最后一行显示错误消息:

  

“属性'Id'是对象关键信息的一部分,不能   被修改。“

我已经注意到如果我删除了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”行之后立即使用调试功能“Set Next Statement”转到形容词或实际行。这两种方法也都停止了。

为什么我不能在同一个上下文中使用Find and Where方法?

1 个答案:

答案 0 :(得分:0)

这是一个模型问题。我必须完成这样的导航映射:

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

我需要这样的方式。