LINQ to SQL和Entity Framework
LINQ to SQL和Entity Framework都是一种包含LINQ功能的对象关系映射技术。
那么为什么会有LINQ这个东西的出现呢。
简单来说LINQ是为了满足不知道怎么操作数据库的程序员开发设计的,LinQ 可以让他们以一种面向数据对象的方式来思考,及持久化他们的数据。
LINQ to SQL(L2S)和Entity Framework的本质区别
EF对数据库架构和我们查询的类型实行了更好的解耦。使用EF,我们查询的对象不再是完全对应数据库架构的C#类,而是更高层的抽象:Entity Data Model。这为我们提供了额外的灵活性,但是在性能和简单性上面也会有所损失。
优点:
LINQ to SQL,是一个轻量级的ORM框架,为Microsoft SQL Server数据库提供快速的应用程序开发,其优点是易于使用、简单、高性能。
Entity Framework,为创建数据库架构和实体类之间的映射提供了更好的灵活性,它还通过提供程序支持除了SQL Server之外的第三方数据库。
EF 4.0一个非常受欢迎的改进是它现在支持与LINQ to
SQL几乎同样的查询功能。这意味着我们在系列文章中的LINQ-to-db查询可以同时适用于EF
4.0和L2S。而且,这也使得L2S成为我们学习使用LINQ查询数据库的理想技术,因为其保持了对象关系方面的简单性,并且我们学习到的查询原则和技术同样适用于EF。
说明:.NET 3.5下建议使用LINQ,该版本已经完全支持成熟的LINQ;使用EF则建议使用.NET 4.0(VS2010)以上的版本,该版本有成熟完整的EF
| 
 LINQ to SQL  | 
 Entity Framework  | 
|
| 
 复杂度  | 
 相对不复杂  | 
 相对比较复杂  | 
| 
 模型  | 
 域模型(Domain model)  | 
 概念数据模型(Conceptual data model)  | 
| 
 数据库服务器  | 
 SQL Server  | 
 多种数据库产品  | 
| 
 开发时间  | 
 快速应用开发  | 
 需要较长时间,但支持更多特性  | 
| 
 继承  | 
 困难  | 
 容易  | 
| 
 文件类型  | 
 DBML文件  | 
 EDMX,CDSL,MSL,SSDL文件  | 
| 
 复杂类型支持  | 
 不支持  | 
 支持  | 
| 
 查询能力  | 
 通过DataContext  | 
 ESQL,对象服务, Entity Client  | 
| 
 性能  | 
 第一次查询较慢  | 
 第一次查询也较慢,但总体优与LINQ to SQL  | 
| 
 完善  | 
 不再出新版本  | 
 还出新版本  | 
| 
 从模型生成数据库  | 
 支持  | 
 不支持  | 
复杂度:
支持越多的特性就会越复杂。LINQ to SQL所支持的特性比较少,所以也就相对不太复杂;而EntityFramework支持的特性比较多,所以相对比较复杂。
模型:
LINQ
 to SQL在数据表与类之间提供了一对一的映射。如果你有Customers,Orders,
和Lineitems表,你就会有Customer,Order,
和Lineitem类来匹配每一个表。EntityFramework可以使你有一个Customer类,而这个类可以匹配多个表。这就意味着公司名可以
 在一个表中,但是地址是在另一个表中,而电话号码又在另一个表中,等等。
数据库服务器:
LINQ
 to SQL只支持Microsoft SQL Server
2000及之后的版本,但即使是SQLServer2000也有很多限制。EntityFramework可以支持IBMDB2, Sybase
SqlAnywhere, Oracle, SQLAzure,还有其他很多。
开发时间:
LINQ to SQL很容易学,开发起来也很快,但是LINQ to SQL有一些限制,在开发较复杂的应用时可能会产生问题。EntityFramework的能力更强,虽然学习及应用起来比较慢,但是对更多的特性的支持使得在开发较复杂的应用时可以使问题最小化。
继承:
LINQ to SQL支持TPH,而EntityFramework支持TPH和TPT,并且对TPC也部分支持。
文件类型:
LINQ
 to SQL使用包含XML的数据库标记语言(DBML)文件来映射entity与数据表。EntityFramework
使用四个文件。第一个是Entity Data Model
(EDMX),这个是在设计器中使用的。在编译时EDMX文件产生了其他三个文件。另外三个文件中,第一个是ConceptualSchema
Definition Language(CSDL)文件,其包含概念模型的XML定义。第二个是SchemaDefinition
Language(SSDL)文件,其包含存储模型的定义。第三个文件是Mapping Specification
Language(MSL)文件,其包含概念模型与存储模型之间的映射。
复杂类型支持:
比如说,一个客户有电话号码,但你想要电话号码定义为国家区号,地区号,城市区号,号码和分机号。LINQto SQL不支持这种复杂类型,而EntityFramework支持。
查询能力:
LINQ
 to SQL通过DataContext对数据库进行查询。EntityFramework通过ObjectContext通过LINQto
Entities进行查询。Entity
Framework还提供了ESQL,它是一种类似SQL的查询语言,很适合在模型定义中定义查询。EntityFramework还包含了
ObjectQuery类,用于对象服务在运行时动态创建查询。最后EntityFramework还包含EntityClientProvider,它
 用于对概念模型进行查询。
性能:
LINQ to SQL和Entity Framework第一次执行查询的时候都比较慢,但之后性能都让人比较满意。EntityFramework性能要稍微优于LINQto SQL。
完善:
微软在发布了Entity Framework之后就停止了发布新的LINQ to SQL,但由于LINQto SQL的简单性,它还是很受欢迎的,所以微软仍将继续对LINQto SQL的用户进行支持与反馈,但是LINQto SQL将不再发布新版本进行完善。
由模型生成数据库:
LINQ to SQL没有能力由模型生成数据库。Entity Framework支持两种类型的开发模式,数据库优先和编码优先。数据库优先开发,数据库已经存在,所以不需要由模型生成数据库。编码优先,你要先创建你的模型,然后由模型生成数据库。
原文: http://blog.163.com/kunkun0921@126/blog/static/169204332201401605839384/
LINQ to SQL和Entity Framework的更多相关文章
- LINQ之路10:LINQ to SQL 和 Entity Framework(下)
		
在本篇中,我们将接着上一篇“LINQ to SQL 和 Entity Framework(上)”的内容,继续使用LINQ to SQL和Entity Framework来实践“解释查询”,学习这些技术 ...
 - LINQ之路 9:LINQ to SQL 和 Entity Framework(上)
		
在上一篇中,我们从理论和概念上详细的了解了LINQ的第二种架构“解释查询”.在这接下来的二个篇章中,我们将使用LINQ to SQL和Entity Framework来实践“解释查询”,学习这些技术的 ...
 - LINQ to SQL和Entity Framework对比与关联 (转载)
		
LINQ to SQL和Entity Framework对比与关联 LINQ to SQL和Entity Framework都是一种包含LINQ功能的对象关系映射技术.他们之间的本质区别在 ...
 - LINQ to SQL和Entity Framework对照
		
LINQ to SQL和Entity Framework都是一种包括LINQ功能的对象关系映射技术.他们之间的本质差别在于EF对数据库架构和我们查询的类型实行了更好的解耦. 使用EF,我们查询的对象不 ...
 - LINQ  TO SQL和Entity Framework  的关系 你了解多少?
		
1. LINQ TO SQL 和EF 特点: LINQ TO SQL和Entity Framework都是一种包含LINQ功能的ORM 也就是所谓的关系对象的映射.其中包括的有DBFrist ...
 - 在Linq to sql 和 Entity framework 中使用lambda表达式实现left join
		
在Linq to sql 和 Entity framework 中使用lambda表达式实现left join 我们知道lambda表达式在Linq to sql 和 Entity framework ...
 - Linq实战 之 Linq to Sql及Entity Framework操作详解
		
Linq实战 之 Linq to Sql及Entity Framework操作详解 一:linq to db的框架 1. linq to sql 2. linq to ado.net entity f ...
 - LINQ to SQL和Entity Framework对比与关联
		
LINQ to SQL和Entity Framework都是一种包含LINQ功能的对象关系映射技术.他们之间的本质区别在于EF对数据库架构和我们查询的类型实行了更好的解耦.使用EF,我们查询的对象不再 ...
 - 查询大数据表的效率对比:Linq to SQL、Entity Framework、企业库存储过程、ADO.Net
		
最近因为要开发大数据量网站,特作比较. Linq to SQL 查询 记录数:399997Linq to SQL 查询 Milliseconds:1910视图查询 记录数:399997视图查询 Mil ...
 
随机推荐
- nginx 部署前期一定要关闭selinux
			
nginx 报错: 1389#1389: *40 "/home/data1/index.html" is forbidden (13: Permission denied), cl ...
 - Linux中的mysql指令
			
如何启动/停止/重启MySQL一.启动方式1.使用 service 启动:service mysqld start2.使用 mysqld 脚本启动:/etc/inint.d/mysqld start3 ...
 - centos7安装vim以及在vim中显示中文
			
1.centos7安装vim yum -y install vim(简单粗暴安装方法) 2.在vim中显示中文不出现乱码 (1).vim ~/.vimrc (~/.vimrc为vim配置文件) (2) ...
 - 小佬頭眼里的读研VS工作
			
最近小佬頭在各种平台和论坛看到很多临近毕业的本科生在纠结读研和工作.于他们来说,人生到了一个十字路口,需要做出一个选择然后继续前行,今天小佬頭就来聊聊读研和工作的话题. 其实有这个考虑的同学不在少数, ...
 - Siki_Unity_3-7_AssetBundle从入门到掌握
			
Unity 3-7 AssetBundle从入门到掌握 任务1&2&3:课程介绍 AssetBundle -- 用于资源的更新 为了之后的xLua (Lua热更新的框架)打下基础 任务 ...
 - Azure web site和web job的config文件加密方式
			
1.分析 由于Azure Web AppService平台的特殊性,所以在C#中原先的config加密方法DataProtectionConfigurationProvider和RSAProtecte ...
 - NO.8:自学python之路------并行socket网络编程
			
摘要 一到放假就杂事很多,这次的作业比较复杂,做了一个周,进度又拖了.不过结果还不错. 正文 粘包 在上一节中,如果连续发送过多数据,就可能发生粘包.粘包就是两次发送的数据粘在一起被接收,损坏了数据的 ...
 - lsmod命令详解
			
基础命令学习目录首页 原文链接:http://blog.sina.com.cn/s/blog_e6b2465d0101fuev.html lsmod——显示已载入系统的模块 lsmod 其实就是lis ...
 - 2017年软件工程第十二次作业-PSP总结报告
			
回顾1 1.回想一下你曾经对计算机专业的畅想 当初你是如何做出选择计算机专业的决定的?经过一个学期,你的看法改变了么,为什么? 你认为过去接触到的课程是否符合你对计算机专业的期待,为什么?经过一个学期 ...
 - 团队博客作业week1——成员介绍
			
我们小组的成员由六人组成,其中包括一名七班的韩国同学. 1.玉钟焕同学 玉钟焕是七班的同学.由于老师为了让我们尽早体验与不熟悉的同学共同工作的环境而提出团队需要跨行政班.于是我们便邀请钟焕同学加入我们 ...