本篇内容介绍了“LINQ有哪些缺点”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
LINQ前景
目前的LINQ还是非常之不完善的,不论是LINQ团队的LINQ TO SQL 或是 ADO.Net的LINQ TO ENTITY,微软连VS2008的SP1都未将Dynamic。cs进行封装,难道真的就如传言说的,LINQ即将死亡?
其实任何情况都是未知数,就好比暴雪总是喜欢不按常理出牌一样,微软在今年经融危机中也受到了相当的创伤,所以谁能说LINQ的未来怎么样,官方没公开.Net4.0之前,不光LINQ,包括F#,一切都是谜。
那LINQ还能使用吗?您在安装厚重的VS2008的时候,宣传广告中会不停的显示VS2008的新特性,其中重点就有LINQ,那作为一个全球***悍的开发软件,把重点的目光投给LINQ,那么就一定有它的地位和意义。
VS2008还在CTP的时候,我就已经开始使用LINQ了,用了那么久,不断的学习及体会到它的方便之处的同时,随着不断的深入,在体验LINQ语言给我们带来的快感的同时,渐渐LINQ的弊端也开始暴漏了出来,我个人发现LINQ的不足有如下:
1.LINQ非延迟加载需要变立即加载的话需要转换成List<T>,但是同时带来的是List<T>是无序的,那么将之做为数据源绑定的话, 自动排序将不存在,那么目前解决办法只能自己重写List<T>的Sort()方法,网上有相关的文章可以参考,如何让它序列化。
2.LINQ的动态查询效果类似于C#的反射,必须自己去网上下载一个Dynamic。cs,我很不明白为什么连SP1都不把它包装一下?
3.LINQ的dbml很讨厌,为什么就不能做得和Dataset一样智能些,如果用VS的对象关系设计器手动更改dbml代码的话,那么你会发现你原先修改好的东西全被覆盖了,这会气疯你,请问谁会无聊到手写非常之复杂的dbml?目前解决办法只有使用plinqo,CodeSmith出品,看到CodeSmith应该再熟悉不过了,我打一开始就很排斥它真的。
4.LINQ读取存储过程不能识别exec命令,假如你的存储过程结尾不是类似select * from。。。,而是exec 。。。,好那么你把它拖进dbml里,你就会发现不管你怎么写,返回值都是int类型,那么有人讲了,我可以手动把int改成 IsingleSource,但是这样又回到了第(3)点不是吗?这意味着什么?想用LINQ使用存储过程,不能用拼接的通用存储过程,而必须老老实实的写清楚存储过程里的表名,列名等等,同样意味着开发效率无法提高。
5.LINQ如不使用存储过程,那么它的性能就只能说比传统的connection连接优越一些,还好IQueryable内置了缓存功能,但还是远无法达到数据库函数及存储过程的效果,毕竟LINQ只是一个提高开发效率的方法,一种清新简化的查询语言。
综合以上LINQ目前的现状弊端,大家可想,LINQ只能适应中小型的项目开发使用,但是如果你能非常熟练的使用LINQ的查询语句及Lambda表达式的话,那么你的中小型项目开发将是非常有效率及安全性很高的,毕竟LINQ基于2.0的泛型,而且LINQ的优势同样与它的不足一样惹眼,我特别喜欢LINQ的Lambda表达式,那简直是程序员的艺术,假使,我是说假使有那么一天,LINQ能将我们写的Lambda表达式直接编译成存储过程,类似if exist() drop之类的话,那就无敌了。LINQ前景不是很乐观啊,让我们一起期待.Net4.0吧。
“LINQ有哪些缺点”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
原创文章,作者:1402239773,如若转载,请注明出处:https://blog.ytso.com/230988.html