我不看好LINQ
领导说:“今年LINQ比较热门,你去搞搞看看”。IT行业忽悠比较多,看了之后,我不看好LINQ。
LINQ(Language Integrated Query)是微软将在C# 3.0中推出的语言集成查询技术。包含LINQ-to-sql,LINQ-to-object,LINQ-to-XML。其中以LINQ-to-sql作为微软的ORM,最为引人注目。笔者认为,LINQ-to-object,LINQ-to-XML虽然很不错,但应用面比较窄。况且如果在一个企业级的项目里面三番五次的要用LINQ-to-object,本身就说明了系统的数据流没有处理好。以下LINQ都代指意图作为数据库持久技术的LINQ-to-sql。
一、LINQ跟Castle.ActiveRecord(NHibernate)没有本质区别,多实现了CodeGenerate功能,但生成的对象也过于死板,还缺少了对象的继承。而Castle.ActiveRecord由Hibernate发展而来,更容易让人理解和接受。
二、LINQ的Lambda语法过于晦涩,代码可读性差,不容易测试。面向对象的概念提出是为了更好地解决问题,而不是让问题复杂化。人们为了逃避SQL,结果又搞出了HQL,现在来了一个Lambda。
三、LINQ不支持微软以外的数据库。虽然有DbLinq,但到现在(10月8号发布的版本)都还不支持ORACLE,况且支持了也要改写代码。
四、LINQ在解决实用性很强的动态查询上,依旧没有进步。详情请垂询Google“LINQ Dynamic”或“LINQ 动态查询”
综上,我不看好LINQ。
-------------------------------------------------
针对几个回复的评论,在10月31号中午添加本文第二段.并修改原文章中错误用词Lamda为Lambda。