Entity Framework加载相关实体——Explicit Loading
上一回我们在《Entity Framework加载相关实体——Lazy Loading》分析了Lazy Loading,这一回我们来分析一下在关闭Lazy Loading的情况下,如果显式加载实体。
数据库我们依旧使用Lazy Loading中使用的数据库。之前我们分析过来,当Lazy Loading关闭时,执行以下代码是无法得到结果的,因为Player的信息并没有被加载。
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信息:
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:
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相关推荐
- Entity Framework加载相关实体——Eager Loading
在前面两回我们分别分析了Lazy Loading和Explicit Loading,这一回我们来分析一下Eager Loading. 在某些情况下,我们可能事先知道要需要加载某些实体的相关实体,这时我 ...
- vue图片加载完成前增加loading效果
这次给大家带来vue图片加载完成前增加loading效果,vue图片加载完成前增加loading效果的注意事项有哪些,下面就是实战案例,一起来看一下. 如下所示: 1 2 3 4 5 6 7 8 9 ...
- javscript 实现iframe加载内容页出现LOADING效果
来源:http://www.cnblogs.com/micheng11/archive/2009/03/31/1425883.html iframe加载内容页实现LOADING效果,即iframe加载 ...
- html5 载入网页 显示,页面加载完之前显示Loading
1.第一种方式 HTML loading... CSS .loader { position: fixed; left: 50%; top: 50%; margin: -0.2em 0 0 -0.2e ...
- loading窗口动画 web_在页面未加载完之前显示loading动画
在页面未加载完之前显示loading动画 loading动画代码demo use-pseudo-class .loading{ width: 100px; height: 100px; border: ...
- 已加载插件:fastestmirror Loading mirror speeds from cached hostfile
**[root@localhost ~]# yum install lrszs -y 已加载插件:fastestmirror Loading mirror speeds from cached hos ...
- 已加载插件: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 ...
- 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.163.com * extras: m
错误产生环境 在centeros7中使用yum -y update命令时产生 错误描述 [root@localhost ~]# yum -y update 已加载插件:fastestmirror Lo ...
- android应用加载过程中的loading动画
应用加载过程中的loading动画: LoadingView .java /*** * loading 动画的实现 * @author * */ public class LoadingVi ...
最新文章
- MySQL 中的反斜杠 \\,真是太坑了!!
- .net core实践系列之SSO-同域实现
- 程序员破解推荐系统瓶颈,带来超百亿收入增量!
- 计算机科学与技术导论课论文题目,优秀计算机专业导论论文题目 计算机专业导论论文题目哪个好...
- linux越狱连接不了设备,Checkra1n 越狱常见问题汇总
- 最简单的数据地图制作,只要6步就搞定!
- 驱动精灵等软件卸载后剩余文件的删除
- 数据库课程大作业——数据分析与数据管理系统实践
- 第四周助教工作总结——NWNU李泓毅
- thinkphp3.2.3 支付宝授权登录php
- Thinkphp5结合layer导入excel
- 晶圆检测显微镜是做什么研究才用到的?
- 解决firefox Windows与linux数据不同步的问题
- 最小二乘法曲线拟合原理与实现
- 12中主要的Dropout方法:如何应用于DNNs,CNNs,RNNs中的数学和可视化解释
- App Store Connect 上构建的新版本上传后找不到,二进制文件无效
- 事业单位招聘java_新华社新媒体中心2018年面向社会招聘事业单位人员
- 百度云服务器搭建(一)
- 自定义钉钉机器人消息提示
- MySQL中文设置及远程连接
热门文章
- 多路查找树之2-3树的插入原理
- python网球比赛模拟_Python-体育竞技模拟
- vb.net datetimepicker月到当日的天数_【坦克世界】11月10日个人专属优惠商店限时开放...
- 计算机网络之数据链路层:5、停止等待协议
- (操作系统题目题型总结)第四章:存储管理
- Libevent源码分析-----连接监听器evconnlistener
- dbgview OutputDebugString输出函数
- Linux报错:/etc/sudoers is world writable
- Nmap源码分析(整体架构)
- C/C++ realloc()函数解析