博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EF架构~看看下面这代码,你还敢用它的延时加载吗?
阅读量:6819 次
发布时间:2019-06-26

本文共 448 字,大约阅读时间需要 1 分钟。

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

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

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

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

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

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

转载地址:http://azszl.baihongyu.com/

你可能感兴趣的文章
使用MySQL Workbench建立数据库,建立新的表,向表中添加数据
查看>>
hive学习-测试数据
查看>>
[历朝通俗演义-蔡东藩-前汉]第011回 降真龙光韬泗水 斩大蛇夜走丰乡
查看>>
Maven多模块项目搭建
查看>>
Windows下SQLMAP的安装图解
查看>>
struts2实现简单文件上传
查看>>
常用的一些代码书写规范
查看>>
人在做,天在看——软考总结
查看>>
Java笔记18:JUnit单元测试
查看>>
Could not find installable ISAM
查看>>
vue教程1-06 v-bind属性、class和style
查看>>
如何研究某个gene的ceRNA 网络
查看>>
lucene .doc里存储的skiplist跳表
查看>>
php对gzip的使用(实例)
查看>>
iOS_7_scrollView大图缩放
查看>>
防火墙入站规则防护方程式攻击-比特币勒索
查看>>
Jackson序列化日期类型的属性
查看>>
pio 背景色
查看>>
【原】移动web资源整理(安卓、ios移动端兼容性问题归整)
查看>>
关于synchronized与volatile的一点认识
查看>>