注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Lucifer 的博客

网易英超评论专栏

 
 
 

日志

 
 
 
 

ADO.NET Entity Framework : Part 2 - ADOEF And LINQ  

2008-02-28 15:46:11|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

LINQ Technology

 

很多人都认为.NET Framework 3.5其实只是个半成品,真正完成进化的将是4.0, 的确,从3.03.5唯一的加强就是LINQ技术的发布,远远不如当初从2.03.0的变化大,当初引入的让人眼前一亮的WCF, WPF, WWF, Cardspace, ASP.NET AJAX, C# 3.0等技术,相对于以前版本都是相当大的革新。ADO.NET Entity Framework要在SP里面发布,而SilverLight远远没有成熟,ASP.NET MVC还在beta版,可能这些东西完成版本才会在4.0里面集成,现在的.NET Framework 3.5只是一个过渡的产品。

 

谈到唯一的进化 LINQ技术的话,这方面的考虑可能MS是比JAVA领先一步的,以前从来把数据读写当作tool层面的小技术的MS已经开始把其当作VS当中专门的一个模块。现在的LINQLINQ TO Object(内存中数据的读写),LINQ TO XML(XML文件中数据的读写),以及LINQ TO ADO.NET(数据库层面上的读写). LINQ TO ADO.NET又包括了三个子模块,LINQ TO DataSetDataSet数据的读写),LINQ TO SQL(针对于SQL Server数据库的读写),以及LINQ TO Entity

 

LINQ TO Entity其实是直接读写程序模型,它要和ADO.NET Entity Framework配合使用,它读写的是ADO.NET Entity Framework建模出来的程序模型,LINQ TO Entity的本质是直接读写ADO.NET Entity Framework数据的一种访问方式。它忽略了数据库层面,直接访问了程序模型层面。

 

很多人都问过一些问题,比如为什么LINQ TO SQL无法实现继承,多表组合,多对多等关系啊,要怎么实现这些个复杂关系啊。其实从设计上而已,LINQ TO SQL就无法实现这些,真正能够实现这些关系的是ADO.NET Entity FrameworkLINQ to Entity

 

LINQ TO SQL不支持多表继承,包括一实体一具体表的继承体制和一实体一扩展表的继承体制。LINQ TO SQL只支持单表的继承,即用一张数据库表存储整个继承体系中所有实体的数据,简单来说就是按照同一个属性来生成不同的类的那种继承。LINQ TO SQL是一个tool层面上的技术,可以实现轻量级和快速的数据库访问开发。为数据库生成其对应的Entity Class。但是如果你想实现比更复杂的映射关系和继承关系,只能使用预定将要发布的ADO.NET Entity Framework以及LINQ TO Entities

 

ADO.NET Entity Framework并不包括在目前的VS 2008 RTM版本当中,可能会在2008年中作为VSService Pack发布,它是一个ORM层面上的框架,可以实现目前LINQ TO SQL无法实现的诸如Many-to-Many的关系映射,Entity InheritanceSingle Entity From Multiple Tables等更为复杂的关系。

 

两者的不同地方在于,你使用LINQ to SQL的时候,你的映射,产生的CLR/.NET类是和你的数据/数据库模型紧耦合或绑定的,如果你改变对象模型,那么你要直接修改这些类,同样如果数据模型改变,你要使用重新生成对象代码,而ADO.NET Entity Framework在数据/数据库模型上建立一个概念层/实体层,这使得你要先定义概念层/实体层,接着建立数据/数据库的脚本(描述),然后在一个影射层建立你的实体和数据之间的逻辑映射,这使得业务和数据源之间有了很好的藕合度和隔离。而LINQ to SQL无法达到这样的效果,所以LINQ to Entities和ADO EF的联合使用就能提供实体的继承,实体的组合等等

  评论这张
 
阅读(267)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017