上一回我们在《Entity Framework加载相关实体——Lazy Loading》分析了Lazy Loading,这一回我们来分析一下在关闭Lazy Loading的情况下,如果显式加载实体。

数据库我们依旧使用Lazy Loading中使用的数据库。之前我们分析过来,当Lazy Loading关闭时,执行以下代码是无法得到结果的,因为Player的信息并没有被加载。

View Code

1  using (TestEntities context = new TestEntities()) 2             { 3                 IQueryable<Team> teams = from t in context.Teams select t; 4                 foreach (Team t in teams) 5                 { 6                     Console.WriteLine(t.Players.Count()); 7                 } 8                 Console.Read(); 9             }

如果我们想要得到t.Players.Count()的结果,我们可以显式地加载Player信息:

View Code

 1 using (TestEntities context = new TestEntities())  2             {  3                 IQueryable<Team> teams = from t in context.Teams select t;  4                 foreach (Team t in teams)  5                 {  6                     //explicitly loading players 7                     t.Players.Load();  8                     Console.WriteLine(t.Players.Count());  9                 } 10                 Console.Read(); 11             }

当t.Players.Load()执行时,Object Service会向数据库发出请求返回该team的所有player信息。

我们也可以从many端加载与它相对应的one端,在这个例子中也就是从Player加载与该player相对应的team信息。这里需要用到TeamReference:

View Code

 1  using (TestEntities context = new TestEntities())  2             {  3                 IQueryable<Player> players = from p in context.Players select p;  4                 foreach (Player p in players)  5                 {  6                     if (p.Age > 30)  7                     {  8                         p.TeamReference.Load();  9                         Console.WriteLine(p.PlayerName + " -> " + p.Team.TeamName); 10                     }                     11                 } 12                 Console.Read(); 13             }

执行结果如下:

当我们打出p.后会发现,智能提示中出现了Team和TeamReference,这里我们选择TeamReference,因为EF将p.Team认为就是一个Team实体。

无论使用Lazy Loading还是将Load方法放入foreach循环语句,都会导致程序频繁访问数据库,导致程序性能下降。我们可以选择性地加载需要的实体,例如上面代码,我们只加载年龄超过30岁的球员所在球队的信息。

至此,Lazy Loading和Explicit Loading都已经分析完了,下一次我们来分析加载相关实体的最后一种形式Eager Loading.

转载于:https://www.cnblogs.com/simonwonn/archive/2012/11/27/2790220.html

Entity Framework加载相关实体——Explicit Loading相关推荐

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

    在前面两回我们分别分析了Lazy Loading和Explicit Loading,这一回我们来分析一下Eager Loading. 在某些情况下,我们可能事先知道要需要加载某些实体的相关实体,这时我 ...

  2. vue图片加载完成前增加loading效果

    这次给大家带来vue图片加载完成前增加loading效果,vue图片加载完成前增加loading效果的注意事项有哪些,下面就是实战案例,一起来看一下. 如下所示: 1 2 3 4 5 6 7 8 9 ...

  3. javscript 实现iframe加载内容页出现LOADING效果

    来源:http://www.cnblogs.com/micheng11/archive/2009/03/31/1425883.html iframe加载内容页实现LOADING效果,即iframe加载 ...

  4. html5 载入网页 显示,页面加载完之前显示Loading

    1.第一种方式 HTML loading... CSS .loader { position: fixed; left: 50%; top: 50%; margin: -0.2em 0 0 -0.2e ...

  5. loading窗口动画 web_在页面未加载完之前显示loading动画

    在页面未加载完之前显示loading动画 loading动画代码demo use-pseudo-class .loading{ width: 100px; height: 100px; border: ...

  6. 已加载插件:fastestmirror Loading mirror speeds from cached hostfile

    **[root@localhost ~]# yum install lrszs -y 已加载插件:fastestmirror Loading mirror speeds from cached hos ...

  7. 已加载插件:fastestmirror Loading mirror speeds from cached hostfile There are no enabled repos. Run “yum

    详细报错信息 已加载插件:fastestmirror Loading mirror speeds from cached hostfile There are no enabled repos.Run ...

  8. 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.163.com * extras: m

    错误产生环境 在centeros7中使用yum -y update命令时产生 错误描述 [root@localhost ~]# yum -y update 已加载插件:fastestmirror Lo ...

  9. android应用加载过程中的loading动画

    应用加载过程中的loading动画: LoadingView .java /***  * loading 动画的实现  * @author   *  */ public class LoadingVi ...

最新文章

  1. MySQL 中的反斜杠 \\,真是太坑了!!
  2. .net core实践系列之SSO-同域实现
  3. 程序员破解推荐系统瓶颈,带来超百亿收入增量!
  4. 计算机科学与技术导论课论文题目,优秀计算机专业导论论文题目 计算机专业导论论文题目哪个好...
  5. linux越狱连接不了设备,Checkra1n 越狱常见问题汇总
  6. 最简单的数据地图制作,只要6步就搞定!
  7. 驱动精灵等软件卸载后剩余文件的删除
  8. 数据库课程大作业——数据分析与数据管理系统实践
  9. 第四周助教工作总结——NWNU李泓毅
  10. thinkphp3.2.3 支付宝授权登录php
  11. Thinkphp5结合layer导入excel
  12. 晶圆检测显微镜是做什么研究才用到的?
  13. 解决firefox Windows与linux数据不同步的问题
  14. 最小二乘法曲线拟合原理与实现
  15. 12中主要的Dropout方法:如何应用于DNNs,CNNs,RNNs中的数学和可视化解释
  16. App Store Connect 上构建的新版本上传后找不到,二进制文件无效
  17. 事业单位招聘java_新华社新媒体中心2018年面向社会招聘事业单位人员
  18. 百度云服务器搭建(一)
  19. 自定义钉钉机器人消息提示
  20. MySQL中文设置及远程连接

热门文章

  1. 多路查找树之2-3树的插入原理
  2. python网球比赛模拟_Python-体育竞技模拟
  3. vb.net datetimepicker月到当日的天数_【坦克世界】11月10日个人专属优惠商店限时开放...
  4. 计算机网络之数据链路层:5、停止等待协议
  5. (操作系统题目题型总结)第四章:存储管理
  6. Libevent源码分析-----连接监听器evconnlistener
  7. dbgview OutputDebugString输出函数
  8. Linux报错:/etc/sudoers is world writable
  9. Nmap源码分析(整体架构)
  10. C/C++ realloc()函数解析