LINQ那些事
由于工作的关系,很长时间都没有在.net下进行开发,微软的技术也两年多都没有跟进了。12月初的时候我决定重新回到开发的工作,发现这两年多的时间里cnblogs是越来越热闹了,成了国内.Net第一阵营。微软的技术更新更是频繁,除了.net framework已经升级了三个版本以外,LINQ、Silverlight、ASP.NET MVC等等都让我眼前一亮。
由于我所经历的项目大多数是data concentrated的,所以对LINQ2SQL和EF最感兴趣,非常高兴终于有“官方”的O/R框架可以用。但也有另外的声音,在msdn的论坛里我看到很多人说LINQ很鸡肋,LINQ已死,弄得好友terrylee都不开心了,忍不住要跳出来口水,但是我想说的是linq2sql作为一个轻量级的o/r框架,that’s quite enough!已经完全足够大多数的数据库开发场景使用。两年多前,为了更新我原来公司的数据访问框架,我花了一段时间来研究NHibernate,本着一个技术人员的热情和执着,我向全公司的开发人员建议使用NHibernate,好处有云云,甚至还义务做培训,但后来我的建议并没有被采纳。虽然大家都知道很好,但是大都抱怨NHibernate框架太复杂(当然不排除其中80%的人是不愿意学习,准备用DataHelper到退休的,理解但不赞同,这部分朋友建议阅读JefferyZhao的“如何成为一个优秀的技术人员”),最后也就不了了之了。
于是,我换了另外一种方案,在ADO.Net的基础上,用类似LINQ2SQL的AttributeMapping的方法来定义entity class,自己写了一套简单的O/R,就实现了类似LINQ2SQL的Insert/Select/Update/Delete,也是由框架生成SQL,完成DataRow和entity object之间的映射,当然不可能有LINQ这么漂亮的query expression,也不会有association,deferred execution和lazy-loading。虽然觉得有很多的不足,但是这个方案推出以后大受欢迎,普遍叫好,快速推广开了。或许你要不屑,或许你会说这是“理想与现实”,但是在现在蜗居的年代,我想“现实”可能来的更令人关注。有句话我想说,轻言“LINQ已死”大部分根本就是只听说而没有真正使用过LINQ的人,毕竟白目的人不管在哪个国家,在哪个行业都很多,即使是在我认为严谨和认真的软件开发行业。
社区里关于LINQ2SQL的学习资料很多,下面是我个人的收集和总结,供大家分享:
2、简单对象的CRUD操作和Association的级联操作
4、Query Expression和Query Operator
7、通过自定义IEnumerable<T>来扩展LINQ
8、通过自定义IQueryable<T>和IQueryableProvider来扩展LINQ
Link:LINQ2Douban http://www.cnblogs.com/chwkai/archive/2009/12/31/1636873.html
LINQToolKit是基于.Net的Web API调用框架。通过定义的XML Mapping,可以实现XML和单个实体对象和关系之间的映射,并可以在运行时对需要访问的属性进行延迟加载。LINQToolKit封装了LINQ style的查询和数据处理方式,基于LINQToolKit你可以用from/where/select来直接进行查询,这些关键字的语义可以通过定义的QueryRule来生成相应的查询uri(用于invoke web api),并且可在上面进行任何Enumerable和Querable允许的的数据操作。
LINQToolKit可以通过扩展支持任何规范的web api,自带了Google Data API的支持
LINQ2Douban是基于LINQToolKit的douban网的api的全功能调用框架。通过LINQ2Douban,你可以用LINQ-Style的方式对douban的数据进行CRUD操作。
声明:LINQ2Douban不是官方框架,K.K只是douban的忠实用户
All the posts in this blog are provided "AS IS" with no warranties, and confer no rights. Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution 2.5 China Mainland License.