在前面兩回我們分別分析了Lazy Loading和Explicit Loading,這一回我們來分析一下Eager Loading。
在某些情況下,我們可能事先知道要需要加載某些實體的相關實體,這時我們就可以用Include方法來在加載實體的查詢語句中把相關實體也一並查詢出來。下面我們還用前兩回使用的數據庫來寫一個例子來分析一下Eager Loading:

1 using (var context = new TestEntities())
2 {
3 var players = from p in context.Players.Include("Team").Include("PlayerDetails") where (p.PlayerDetails.Any(d => d.Height > 200)) select p;
4 foreach (var v in players)
5 {
6 string output = string.Format("Team: {0} Player: {1}", v.Team.TeamName, v.PlayerName);
7 Console.WriteLine(output);
8 }
9 Console.Read();
10 }
以上代碼,我們查詢出了身高在2米以上的球員的名字和所在球隊,在查詢Player信息的同時,也查詢了Team表和PlayerDetails表的信息,將三個表的信息全部加載了進來。這里我們需要注意,我們可以控制將哪些相關實體加載入內,但不能夠對Include進來的實體進行篩選,如以下代碼:

1 var teams = from t in context.Teams.Include("Players") where (t.TeamID == 1) select t;
我們可以選擇加載哪些球隊,卻不能選擇加載球隊的哪些球員,該球隊的所有球員都將被加載進來。
至此,Entity Framework加載相關實體的三種形式全部分析完畢!