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 on 2012-11-27 09:49  simonwonn  阅读(151)  评论(0编辑  收藏  举报

导航