学习EF之贪懒加载和延迟加载(2)
2018-06-18 01:40:50来源:未知 阅读 ()
通过昨天对EF贪婪加载和延迟加载的学习,不难发现,延迟加载还是很好用的,但是问题也就来了,有的时候我们只需要加载一个实体,不需要和他相关的外部实体,这时候我们来看看EF延迟加载时怎么作用的吧
打开profiler
在Main函数入口处写一个查询,在Console.Read();处打一个断点
static void Main(string[] args) { var context = new EFDbContext(); var user = context.Users.FirstOrDefault(a => a.Id == 1); Console.WriteLine(user.Name); Console.Read(); }
在profiler中最后一行可以看他EF生成sql语句
也就是说我们只需要实体本身的属性的时候EF不会帮我们加载外部实体
接下来修改一下Main函数中的内容
static void Main(string[] args) { var context = new EFDbContext(); var users = context.Users.FirstOrDefault(a => a.Id == 1); //var users = context.Users.Include("Articles").FirstOrDefault(a => a.Id == 1); Console.WriteLine(users.Name); foreach (var a in users.Articles) { Console.WriteLine(a.Title + "," + a.Category.Name + "\n"); } Console.WriteLine(users.Articles.Count() + "\n" + users.Categories.Count() + "\n"); Console.Read(); }
进行单步调试并观察profiler发现,延迟加载是在我们需要某一个外部实体时才从数据库中查找的
换成贪懒加载
结论;
延迟加载是在我们需要的时候才去加载,当需要加载大量的外键对象时会增加与数据库的读取次数
此时可以考虑贪婪加载
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 如何0基础学习C/C++? 2020-06-06
- Qt与Js交互通信 2020-05-25
- vtk学习记录(三)——初识vtkRenderer 2020-05-16
- C++基础 学习笔记六:复合类型之数组 2020-04-25
- C++基础 学习笔记五:重载之运算符重载 2020-04-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash