LINQORM详细比较

LINQ有很多值得学习的地方,这里我们主要介绍LINQ ORM之间的关系,包括介绍LINQ to SQL是.NET 3.5内置的一个轻量级O/R Mapping解决方案等方面。

创新互联长期为近1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为济阳企业提供专业的成都做网站、成都网站建设,济阳网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。

1.LINQ不是ORM,确切地来说,他们之间的关系是:

LINQ的一个子集是属于ORM的

2.他们之间的唯一的相同点是:

LINQ ORM都是一种技术概念,而不是一种实现,最大的区别就在于——他们根本就不是一路东西!

LINQ是一种语言特性,在语言(Language)中集成(Integrate)查询(Query)句法,所以才叫LINQ——Language-Integrated Query,目的是以一种看起来像SQL的方式来完成原本你需要去foreach的工作——最显著的就是集合操作,比如搜索啊,排序啊,批量更新啊。因为 SQL是为关系数据库而存在的,关系数据理论是建立在集合论的基础上的,所以集合操作当然是最本职的工作啦!

ORM是Object/Relation Mapping。Object是哪路?是Object Oriented Programming那路Object,Relation是哪路?是关系数据理论那路Relation,ORM的作用是在对象和关系之间建立映射,让开发者可以以面向对象的方式去完成一些关系数据操作——这些原本需要用关系代数、关系操作语言,这些通常看起来有点生硬,还得花心思去专门学的东西来解决的操作。

LINQ ORM就不是一路上的东西,但是为什么很多人会把他们扯在一起呢?

3.有两个最主要的原因

第一:LINQ长得太像SQL了!SQL是关系数据访问领域目前阶段当之无愧的带头大哥,ORM是一个挺时髦的关系数据访问面向对象化解决方案,也和SQL离不开关系,两者就靠SQL搭上边了。

第二:LINQ to SQL的存在。LINQ to SQL是一个ORM框架,它利用了LINQ的便捷性和LINQ长得像SQL这个特点,实现了一个用LINQ来完成关系型数据库(这里是SQL SERVER)数据访问的便捷通道。

4.LINQ / LINQ to SQL / LINQ to XXX

LINQ是新生事物,不过从不少文章和讨论上看来,这方面的概念也已经有点混沌不清了。因此我们经常可以看到这样的话:

◆LINQ只能将数据表与实体属性一一对应……
◆LINQ开发指南:在LINQ中进行数据库字段映射……

以上两句话其实说的都是LINQ to SQL而不是指LINQ。可能由于LINQ to SQL的上镜率最广(连MSDN上About LINQ的第一个示例就是查询数据库的),因此许多人都将LINQ to SQL与LINQ混用,这会给初学者造成误解,认为LINQ就是LINQ to SQL,LINQ to SQL就是LINQ——事实当然不是这样的。

LINQ是Language-Integrated Query的缩写,是C# 3.0和VB 9.0中新加入的语言特性,可以在编程时使用内置的查询语言进行基于集合的操作。这么做可以大大简化开发过程,提高开发效率。例如:

 
 
 
  1. List userList = GetUserList();  
  2. var userWithOddId = from u in userList  where u.UserID % 2 == 1  select u;   
  3. foreach (User u in userWithOddId)  {  
  4. Console.WriteLine(u.UserName);  
  5. }   

如果没有LINQ,要筛选出ID为奇数的User对象则需要创建一个List,然后遍历整个列表,将符合特定条件的User对象放入新列表。而有了 LINQ,这部分的筛选就变得非常容易,甚至只需要一句话就能完成。如果觉得这个例子不够说明LINQ对生产力有重大贡献的话,请关注我接下来的一篇文章(暂定名为《我们为什么要拥抱LINQ》)。LINQ特指形如上面这段代码中from...where...select这样的用法,其返回值是 IQueryable。

LINQ to SQL是.NET 3.5内置的一个轻量级O/R Mapping解决方案,可以将数据表映射为实体对象,方便开发人员对数据库的操作。可见,LINQ to SQL实只是LINQ的一个实现,提供了一个可以查询SQL Server数据库的LINQ Provider。

LINQ Provider是LINQ 查询的执行器,标准LINQ语法支持许多的操作符,但是某个具体的LINQ实现可能只支持其中的一部分。在.NET 3.5默认提供了三种LINQ Provider,分别是LINQ to Object(即上面的例子),LINQ to SQL以及LINQ to XML。

LINQ to XXX表示使用LINQ针对XXX这种数据进行查询的解决方案。我们可以自定义LINQ Provider,使用我们自定义的查询规则来处理特定数据集。目前互联网上已经可以找到数十种LINQ Provider(如LINQ to Flickr,LINQ to NHibernate等),而已经处于beta 3阶段的ADO.NET Entity Framework,最终也会提供一个LINQ Provider,叫做“LINQ to Entities”。以上介绍LINQ ORM。

当前标题:LINQORM详细比较
标题路径:http://www.hantingmc.com/qtweb/news4/488254.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联