2014-05-19 82 views
0

想要得到小孩的小孩,兩者有很多關係。小孩的存取小孩,與1:M

所以一個CarePeriod具有其中有許多ExerciseTrials許多DailyExerciseSets。 所以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這個邏輯。 我已經解決了這個問題幾次,但真的想看看這是如何完成的。

直觀地我會去爲

​​

但失敗..

在正確的方向某點,將是巨大的。

+0

使用所提到的鏈接http://stackoverflow.com/questions/3356541/entity-framework-linq-query-include-multiple-children-entities –

回答

0

要包括收集你需要使用「子選擇」,而不是點符號:

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)這裏,因爲這已經由「子包括」包括:

var x = (from cp in db.carePeriod 
      .Include(cp => cp.DailyExerciseSets.Select(es => es.exerciseTrials)) 
     where (conditions...) 
     select cp); 
+0

感謝。作品。一個跟進,你會如何去另一個級別?即如果exerciseTrials有一系列您想要獲取的實體? – michaelBurns

+0

從來沒有這樣做,但應該是一樣的:'.Include(cp => cp.DailyExerciseSets.Select(es => es.exerciseTrials.Select(t => t.Sub)))''。 – ChrFin

+0

這就是你的答案後我試過,沒有運氣。謝謝你。 – michaelBurns