技术(1)EF实体框架(二)延迟加载

引言:

               学习的动力来源于问题的出现和知识的深入研究。

概述:

               延迟加载怎么来理解?延迟加载也称之为懒加载(lazy load),核心原理就是:当真正需要数据的时候,才真正执行数据加载操作。EF是一个与数据库交互的实体框架,对于系统性能提高,延迟加载必不可少。EF延迟加载:使用Lamabda表达式或者Linq从EF实体对象中查询数据时,EF并不只是直接查询数据,而是需要具体数据的时候,才会把数据加载到内存中。

内容:

                一 本质:

               1 延迟生成SQL语句:生成的SQL语句不确定拼凑条件一起提交,降低数据库交互次数,提高数据库的吞吐量例如:常用的分页,先对数据库进行排序,然后按照需求跳过几行数据,再去几行数据,这并不能用简单的where方法来实现。如果不用延迟加载,where、排序、跳过、取出数据方法每次使用时都会提交sql语句到数据库那么一个分页查询需要访问4次数据库;若使用延迟加载,四个方法相当于四个条件,当四个条件都满足的时候,将整个拼凑好的sql语句一起提交到数据库,这样只访问了一次数据库。

               2 按需加载:例如外键属性,用到该外键时,才会查询该外键对应的表。

         二 实现方式:

               1 延迟生成SQL语句:例如俩个条件Where和取第第一条数据拼凑查询出数据。

                      (1)首先数据库中相应表中有数据,书写相应查询代码:

                      

                     (2)执行第一条语句:DbQuery<Order_Info> query = db.Order_Info;并没有查询数据。

                     (3)执行第二条语句:Order_Info order  = query.FirstOrDefault();我们只需要第一条 订单信息

                       

                2 按需加载:

                      EF使用前:当遇到主外键相互关联的表,当需要从表中的数据时,我们必须通过主表进行查询。如果我们只需要从表数据,那也必须关联到主表,这种操作方法很低效。

                      EF使用后:我们只需要查询从表的数据即可,直接查询产品表中的数据。

                                 三 优化:

                        1 EF如果查询过程中,发现重复的时候,会读取自己的缓冲数据,不读取数据库里面的数据。

               2 include进行inner join查询:一次性读出来一张表的数据,然后再去遍历查询出来的数据集合,找到我们需要的数据。      

总结:

              性能的优化也是我们系统开发人员需要考虑的重要因素,数据查询以及处理的效率,也决定我们软件开发的质量。一些必要的性能优越的技术,我们需要掌握。


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值