分享:“延迟加载与预加载”使用体会

注:文章以Linq to Entities 讲解


接触mvc+ef开发一年时间左右了,之前一直处于使用状态,对ef里面的一些概念并没有太多的研究,在解决问题的过程中有些疑问一直逗留在脑海中,现在稍微可以空下来查查资料并整理下了。


什么是“延迟加载”和“预加载”?听上去好像很拽的样子。


延迟加载:


老大最初给我的解释——“当使用到的时候才去加载,比如:ToList()、ToDictionary()的时候”,自己也简单的百度过一下,做过一些简单的测试,当用frofile监视如下代码:


[url=http://note.youdao.com/yws/public/resource/802e32135fe250bf0309b0b115486081/6165897760E64AF08101AFD50A9F6DE2][/url]


断点到第一行时,profile是不会有任何动静的,但是当你往下执行 “ToList()”句时,profile会监视到你发送过去的sql语句,那么这就可以解释了“当你使用时才去加载”就是延迟加载的意思。想想好像是这么回事,但总感觉有些牵强或者说缺乏说服力,因为IQueryable毕竟不是实实在在如List、Dictionary、Array这种集合,所以我需要得到列表而使用ToList()也很正常。


其实这并不能非常直观的体现“延迟加载”的牛逼或者说特别之处(当前理解和感受到的)。


延迟加载真真体现个性的地方其实是相对于导航属性来说的,或者说“关联表”,比如我有客户表T_CUSTOMER和客户联系人表T_CUSTOMER_CONTACTS,他们之间是一对多关系,业务场景可能会让你有如下代码——业务比较扯淡,假设为之。


[url=http://note.youdao.com/yws/public/resource/802e32135fe250bf0309b0b115486081/735228756FC74EED903AFCFA093B4170][/url]


图片有可能显示不了,这个是有道分享地址:


http://note.youdao.com/share/?id=802e32135fe250bf0309b0b115486081&type=note


希望大家指点指点,给一些宝贵意见,谢谢!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值