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的学习资料很多,下面是我个人的收集和总结,供大家分享:

1、定义从关系数据库到Entity Class的映射

2、简单对象的CRUD操作和Association的级联操作

3、事务和并发冲突处理

4、Query Expression和Query Operator

5、动态查询

6、DataContext的对象生命周期管理

7、通过自定义IEnumerable<T>来扩展LINQ

8、通过自定义IQueryable<T>和IQueryableProvider来扩展LINQ

9、解析Table<T>.Attach引发的异常和解决方法

 

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的忠实用户

posted @   海南K.K  阅读(2676)  评论(9编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示