EF的三种加载方式

一、三种加载方式

      延迟加载【Lazy Loading】、饥饿加载【Eager Loading】、显式加载【Explicit Loading】

二、区别

       2.1、延迟加载:

                说明:和淘宝商品列表一样,下拉刷新,按需加载。

                特点:关闭延迟加载后,查询主表数据,主表中从表实体为null。

                注意:1、全局配置:在数据库上下文的构造方法中添加:this.Configuration.LazyLoadingEnabled = true;

                           2、可以在使用的时候单独配置。

                           3、延迟加载,true为开启,false为关闭,默认就是延迟加载的。

                           4、延迟加载的数据在使用的时候才会加载出来,在遍历数据的时候建议使用延迟加载。

                           5、每次调用子实体(外键所在的实体),才会查询数据库。主表数据加载的时候,不去查询外键所在的从表。

                           6、需要满足的条件:a、poco类是public且不能为sealed;b、关联属性需要标记为Virtual

                开启延迟加载的状态:

                 

                关闭延迟加载的状态:

                

       2.2、饥饿加载:

                说明:加载父对象的同时加载子对象。

                使用步骤:1、关闭延迟加载;

                                  2、查询主表的同时,通过Include把从表数据一并查询出来。

                注意:由于查询主表的时候已经通过Include一次性将所有数据查询出来,所以在调用从表数据的时候,均从缓存中读取,无须查询数据库。

                示例:         

               

       2.3、显式加载:

               说明: 当禁用延迟加载,仍然可以通过显式加载来延迟加载相关实体。

               使用场景:关闭延时加载后,单纯查询主表的数据,后面又想到再次查询从表,就需要哦用到显示加载了。

                前提:1、关闭了延迟加载;

                           2、单纯查询了主表,没有使用Include函数关联查询从表。

                使用步骤:1、单个实体用:Reference

                                  2、集合用:Collection

                                  3、最后需要Load一下

                示例:            

                

三、通过日志查看EF执行过程中的语句

               

 

posted on   木乃伊人  阅读(226)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示