Linq to Entities - 使用Include()急切加载

时间:2010-07-06 12:05:36

标签: c# .net-3.5 linq-to-entities include eager-loading

我有这个非常基本的表结构:

dbo.tblCategory
dbo.tblQuestion(与tblCategory的多对一关系)
dbo.tblAnswer(与tblQuestion的多对一关系)

所以基本上,我想要做的是当我加载一个类别时,我想加载所有问题和所有答案。

现在,我已经能够使用以下代码执行此操作:

public tblCategory Retrieve(int id)
{
    using (var entities = Context)
    {
        var dto =
            (from t in entities.tblCategory.Include("tblQuestion")
                                           .Include("tblQuestion.tblAnswers")    
                 where t.Id == id
                 select t).FirstOrDefault();

            return entities.DetachObjectGraph(dto);
        }
    }
}

然而,我并不完全迷恋于此;如果关系名称在我的模型中发生变化;构建项目时我不会遇到错误。理想情况下,我想使用lambda表达式;像这样的东西:

public tblCategory Retrieve(int id)
{
    using (var entities = Context)
    {
        var dto =
            (from t in entities.tblCategory.Include(t => t.tblQuestion)
             where t.Id == id
             select t).FirstOrDefault();

        return entities.DetachObjectGraph(dto);
    }
}

现在,使用上面的代码片段;我坚持如何深入到Answers表。关于我可以用于lambda表达式的任何想法吗?

1 个答案:

答案 0 :(得分:8)