我有两个实体:GrmDeploymentAttempt
和GrmDeploymentStep
。这些实体通过中间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>
答案 0 :(得分:2)
var attempt = _context.GrmDeploymentAttempts
.Where(x => x.Id == attemptId)
.Include(x => x.AttemptSteps.Select(a => a.Step))
.FirstOrDefault();
Include(...Select(...))
通常会加载子集合的导航属性。