试图让孩子成为孩子,两人都有很多关系。
所以CarePeriod有许多DailyExerciseSets,它有许多ExerciseTrials。 所以carePeriod有DailyExerciseSets的集合,它有一个ExerciseTrials集合 我写的SQL是
SELECT <bla>
FROM careperiods
left outer JOIN DailyExerciseSets ON (...)
left outer JOIN exerciseTrials ON (...)
WHERE
careperiods.bla = bla
AND DailyExerciseSets.bla = bla
AND exerciseTrials.bla = bla
只需在EF / LINQ中复制此逻辑即可。 我已经解决了这个问题几次,但我真的想知道这是如何实现的。
直觉上我会选择
var x = (from cp in db.carePeriod
.include(cp => cp.DailyExerciseSets) //this bit is fine
.include(cp => cp.DailyExerciseSets.exerciseTrials) //fail...
where (conditions...)
select cp);
但这失败了..
正确方向上的一点很棒。
答案 0 :(得分:0)
要包含您需要使用&#34; sub select&#34;而不是点符号:
var x = (from cp in db.carePeriod
.Include(cp => cp.DailyExerciseSets)
.Include(cp => cp.DailyExerciseSets.Select(es => es.exerciseTrials))
where (conditions...)
select cp);
此处您不需要Include(cp => cp.DailyExerciseSets)
,因为这已包含在&#34; child include&#34;中:
var x = (from cp in db.carePeriod
.Include(cp => cp.DailyExerciseSets.Select(es => es.exerciseTrials))
where (conditions...)
select cp);