所选对象的对象属性为null

时间:2011-06-17 16:44:45

标签: linq-to-entities

我在使用Linq实体框架方面遇到了麻烦。

这是我的代码:

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对象?

1 个答案:

答案 0 :(得分: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语句