EF 实体预先加载和延迟加载

参考连接:https://www.cnblogs.com/Dr-Hao/p/5365325.html

                  https://www.cnblogs.com/chenwolong/p/LazyLoad.html

预先加载:是将所有的查询语句拼接成一条查询语句,然后在进行查询

延迟加载:多次查询。

延迟加载的条件:

1.导航属性:数据模型用virtual修饰,否则查询回来的数据为空

2.数据模型的类是public。

注意:EF默认支持延迟加载,可以通过在创建上下文处设置context.Configuration.LazyLoadingEnabled = false;或者将导航属性的virtual修饰符去掉来关闭延迟加载

 

可以使用数据库的监控工具查看数据库访问情况

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ADO.NET Entity Framework(EF)提供了三种加载数据的方式:懒惰加载延迟加载预先加载。 1. 懒惰加载 懒惰加载是指只有在访问导航属性时,才会加载相关实体。例如,如果有一个`Order`实体,它有一个导航属性`Customer`,则只有在访问`Customer`属性时,`Customer`实体才会被加载。懒惰加载可以避免在不需要时加载大量的数据,但是会增加访问时间,因为每次访问导航属性时都要进行数据库查询。 使用懒惰加载需要在`DbContext`中启用它,可以通过以下方式实现: ``` context.Configuration.LazyLoadingEnabled = true; ``` 2. 延迟加载 延迟加载是指在访问导航属性时,会将查询延迟到最后一刻。换句话说,当访问导航属性时,EF会自动执行查询并返回相关实体。使用延迟加载可以避免在不需要时查询大量的数据,但是也会增加访问时间,因为每次访问导航属性时都要进行数据库查询。 使用延迟加载需要在定义导航属性时启用它,可以通过以下方式实现: ``` public virtual Customer Customer { get; set; } ``` 3. 预先加载 预先加载是指在查询时一次性加载所有相关实体。例如,如果需要查询`Order`实体并且需要访问其相关的`Customer`实体,则可以使用预先加载来避免在访问`Customer`属性时进行数据库查询。使用预先加载可以减少访问时间,但可能会导致在不需要时加载大量的数据。 使用预先加载可以通过以下方式实现: ``` var orders = context.Orders.Include(o => o.Customer).ToList(); ``` 以上是ADO.NET Entity Framework(EF)提供的三种加载数据的方式:懒惰加载延迟加载预先加载。开发人员可以根据实际需求选择适合自己的加载方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值