Entity Framework加载相关实体——Eager Loading

在前面两回我们分别分析了Lazy LoadingExplicit Loading,这一回我们来分析一下Eager Loading。

在某些情况下,我们可能事先知道要需要加载某些实体的相关实体,这时我们就可以用Include方法来在加载实体的查询语句中把相关实体也一并查询出来。下面我们还用前两回使用的数据库来写一个例子来分析一下Eager Loading:

View Code
 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进来的实体进行筛选,如以下代码:

View Code
1 var teams = from t in context.Teams.Include("Players") where (t.TeamID == 1) select t;

我们可以选择加载哪些球队,却不能选择加载球队的哪些球员,该球队的所有球员都将被加载进来。

至此,Entity Framework加载相关实体的三种形式全部分析完毕!

posted @ 2012-03-23 16:38  Allen Li  阅读(2487)  评论(4编辑  收藏  举报