在EF4中使用表达式急切加载多对多?

时间:2011-09-23 17:41:46

标签: c# entity-framework entity-framework-4 entity-framework-4.1 eager-loading

我有两个实体:GrmDeploymentAttemptGrmDeploymentStep。这些实体通过中间POCO GrmDeploymentAttemptStep具有多对多关系,其中包含有关实际多对多关系的其他信息。

我正在尝试通过急切加载来加载所有步骤信息的尝试,所以现在我有以下代码:

        var attempt = _context.GrmDeploymentAttempts
                              .Where(x => x.Id == attemptId)
                              .Include(x => x.AttemptSteps)
                              .FirstOrDefault();

问题是这个急切加载中间表,但不急于加载Steps表。如何使用带有表达式的Include()来加载我的Step实体?使用Include(string)方法,我可以Include("AttemptSteps.Steps"),但我不知道如何使用表达式执行此操作。

作为一个注释,我知道我可以改为加载AttemptSteps实体并急切加载,但在某些情况下我无法做到这一点,我一直在想如何处理这个问题。 / p>

1 个答案:

答案 0 :(得分:2)

var attempt = _context.GrmDeploymentAttempts
    .Where(x => x.Id == attemptId)
    .Include(x => x.AttemptSteps.Select(a => a.Step))
    .FirstOrDefault();

Include(...Select(...))通常会加载子集合的导航属性。