2011-06-17 59 views
2

林遇到实体框架时遇到问题。所选对象的对象属性为空

这里是我的代码:

var activeScoreList = (from s in context.Score 
         join i in context.Import on s.import.importId equals i.importId 
         where i.isActive.Value == 1 
         select s).ToList(); 

foreach (Score s in activeScoreList) 
{ 
    if (s.User.userId == loggedOnUserId) { // Here 
     ... 
    } 
} 

我在我的数据库中的几个Score对象和外键UserIdNOT NULL
但是,if行始终是例外User属性总是null

我是Linq的新手,所以我可能错过了配置的地方。这种行为是否正常?我必须为每个分数进行一次新查询才能获得User对象吗?

回答

2

编辑 - 您实际上不需要加入声明。您可以像这样重写查询

var activeScoreList = (from s in context.Score.Include("User").Include("Import") 
         where s.Import.isActive.Value == 1 
         select s).ToList(); 

您需要加载用户导航属性。因此,在您的foreach语句可以调用

s.UserReference.Load() 

如果你没有使用你的查询join语句,你可以使用context.Score.Include("User"),但是因为你使用了join它会忽略所有Include陈述

+0

谢谢,我不知道Include()方法! – madprog