深入浅出谈LINQ.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
深入浅出谈LINQ 某君被邀为一超市设计数据库,用来存储数据。该君根据该超市中实际出现的对象,设计了Customer, Employee,Order, Product等表,用来保存相应的客户,员工,订单,货品等。太好了,该君很有oo的思想吗。   如果,你被要求用类及对象,来描述该关系型数据,你该如何做呢?在linq推出之前,ADO.NET被用来做数据访问层。而后,程序员需要自己去编写事务逻辑层中所出现的类。比如,Customer, Employee,Order, Product等。然后,程序员组装所需的sql语句,通过ADO.NET,将返回的记录,来初始化Customer等类的对象。在这里,你已经自己动手将Customer表和Customer类关联了起来。从Linq To Sql的设计来看,它主要是为了解决data!=objects 的问题而产生的。现在,有了Table和Class之间的映射,数据和对象之间就可以有一个一一对应的关系了。   在Linq To Sql之前,在java领域有Hibernate,在net领域有NHibernate技术,来实现object/relational 持久和查询服务。无论是Hibernate还是NHibernate,其配置复杂,上手时间长,已经不能适应快速开发的需要。而Linq To Sql的推出,恰恰弥补了它们的缺点,彻底降低了程序开发门槛。   LINQ,语言级集成查询(Language Integrated Query)   经过了最近 20 年,面向对象编程技术( object-oriented (OO) programming technologies )在工业领域的应用已经进入了一个稳定的发展阶段。程序员现在都已经认同像类(classes)、对象(objects)、方法(methods)这样的语言特性。考察现在和下一代的技术,一个新的编程技术的重大挑战开始呈现出来,即面向对象技术诞生以来并没有解决降低访问和整合信息数据( accessing and integrating information )的复杂度的问题。其中两个最主要访问的数据源与数据库和 XML 相关。   LINQ 提供了一条更常规的途径即给 .Net Framework 添加一些可以应用于所有信息源( all sources of information )的具有多种用途( general-purpose )的语法查询特性( query facilities ),这是比向开发语言和运行时( runtime )添加一些关系数据( relational )特性或者类似 XML 特性( XML-specific )更好的方式。这些语法特性就叫做 .NET Language Integrated Query (LINQ) 。   LINQ在开发中的地位   DLINQ *.dbml文件该属于哪一层,的确Linq to Sql存在问题,DLINQ中,虽然可以在语言层级定义查询逻辑。但是依然没有将数据库持久化数据映射为领域对象,所以还是一种针对数据库的编程模型。   LINQ是微软将在C# 3.0中将推出的语言集成查询技术,许多人也将LINQ叫做微软的ORM。LINQ不仅仅针对关系数据库,它只是解决一个问题Data!=Object,也就是说他解决的就是Data=Object.。作为底层框架,可以为ORM实现提供更强大的基础平台。在Linq之前在.net领域最流行的框架就是Nhibernate。是不是在LINQ之后Nhibernate就要消失呢?答案自然是否定的。   这里有个帖子Microsoft LINQ + NHibernate,在那篇帖子中,作者列举了三大原因:   在DLINQ中,虽然可以在语言层级定义查询逻辑。但是依然没有将数据库持久化数据映射为领域对象,所以还是一种针对数据库的编程模型。而Nhibernate则可以直接将关系数据映射为领域模型,这是DLINQ的主要问题。   DLINQ不支持继承类的映射。   Nhibernate已经提供了许多帮助进行领域面向对象建模的特征。而DLINQ目前还无法拥有。 而LINQ + NHibernate的好处则是:类型安全的查询,并且能使用智能提示功能!这样可以不用学习HQL了。能获得所有NHibernate所拥有的能力。假如你已经从数据库中查询出了一个数据集,那么可以使用LINQ来进行过滤,排序和分页操作。  从原理上来说,DLINQ是将Lambda查询表达式解析为SQL语句:DLINQ = SQL,而NHLINQ则是将Lambda查询表达式解析为HQL语句:NHLINQ = HQL。  开源社区的智慧是无穷的,并且和微软也不是你死我活的关系。反倒应该是一种互相补充的关系

文档评论(0)

yan666888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档