EF架构~看看下面这代码,你还敢用它的延时加载吗?

linq to entity或者linq to sql都提供了非常方便的延时加载功能,什么意思?就是说在建立对象时,它会将数据库中的表关系同时建立进来,然后在查询时,如果用到的外键表的数据,才会建立这个外键表的查询,这一点确实很“酷”,但是它是有代价的,甚至代价是巨大的。

我一直不太喜欢我命运被别人去掌握着,写代码也一样,说着很好听的“延时加载”,用着也算方便,但对于它生成的SQL代码却是让我很恐惧的,下面看一下截图:

这是一个查出10条结果的语句

这只是一部分,它对于建立SQL的connection是10次,傻眼了吧,呵呵,这绝对是不能接受的,但如果你不用外键表,它是很正常的,一个SQL链接就搞定了,当然这是正常的。

其时,EF把复杂查询进行了封装,在它看来叫“延时加载”,对我来说就是关系表的复杂查询,有时我们应该把它提出来,自己去写这个LINQ语句,而不用系统所畏的“延时加载”,下面是自己写的LINQ语句的结果:

恩,自己写的查询结果,是我们可以接受的,也是我们可以控制的,呵呵。

本文转自博客园张占岭(仓储大叔)的博客,原文链接:EF架构~看看下面这代码,你还敢用它的延时加载吗?,如需转载请自行联系原博主。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值