zz entity framework vs linq to sql

http://blog.csdn.net/jfchef/article/details/7632872

Entity Framework和LINQ to SQL到底有什么区别?这是一个很常见的问题。下面的表中简要罗列了两种技术的主要区别。


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支持两种类型的开发模式,数据库优先和编码优先。数据库优先开发,数据库已经存在,所以不需要由模型生成数据库。编码优先,你要先创建你的模型,然后由模型生成数据库。

时间: 2024-08-25 17:56:41

zz entity framework vs linq to sql的相关文章

Entity Framework 与 LINQ to SQL

Entity Framework和LINQ to SQL到底有什么区别?这是一个很常见的问题.下面的表中简要罗列了两种技术的主要区别. LINQ to SQL Entity Framework 复杂度 相对不复杂 相对比较复杂 模型 域模型(Domain model) 概念数据模型(Conceptual data model) 数据库服务器 SQL Server 多种数据库产品 开发时间 快速应用开发 需要较长时间,但支持更多特性 继承 困难 容易 文件类型 DBML文件 EDMX,CDSL,M

高仿Entity Framework?Linq to SQL也有春天!

开发这个框架,主要起源于有很多使用ALinq或者Linq to SQL的用户,经常向我抱怨,它们使用起来的确很爽,但是动态查询太让人纠结了.这个框架主要就是想解决客户碰到的动态查询的问题.至今为至,已经断断续续地写了一年多了,写这个框架,充满了挑战与乐趣.当然,现在更觉得,能把文档写好,更是挑战.大多数的程序员,一直对于写文档这码事,不大重视,我也是其中的一员.但是,长期地与客户打交道,让我认识到,文档是非常地重要的,而且,能把文档写好也不是件容易的事情.这次的发布,更多的精力放在了文档的编写上

【工商时间】Entity Framework 之前 - “LINQ 最佳实际讲座”

"LINQ 最佳实际讲座"这本书于 2008/03 出版,至今整整两年,因为是门全新的技术,接受度并不高,经过两年的蕴酿,使用 LINQ 的技术人似乎开始有增多的趋势,它的好处也渐渐让大家所看见,随着 .NET 4.0 的到来,Entity Framework 技术的成熟,近日这本书的销量似乎比往常多了一些- "LINQ 最佳实际讲座"这本书于 2008/03 出版,至今整整两年,因为是门全新的技术,接受度并不高,经过两年的蕴酿,使用 LINQ 的技术人似乎开始有增

Entity Framework Code First for SQL Compact

这篇博客将介绍EF Code First中如何使用SQL Compact.SQL Compact是微软推出的免费的关系型数据库,目前最新版本是SQL Compact 4.0.微软的开发工具VS 2010/SQL Server 2008及后续版本中均不带有SQL Compac 3.5/4.0t数据库查看工具.不过CodePlex上有一个SqlCeToolbox的工具非常不错.有点儿像精简版的SQL Server Management Studio. SQL Compact可以用于以下的一些场景,例

使用Entity Framework 自动产生的Sql语句

对于一个单独实体的通常操作有3种:添加新的实体.修改实体以及删除实体. 1.添加新的实体 Entity Framework Code First添加新的实体通过调用DbSet.Add()方法来实现. using (var ctx = new PortalContext()) { var province = new Province { ProvinceNo = "100000", ProvinceName = "测试" }; ctx.Provinces.Add(p

Entity Framework Code First执行SQL语句、视图及存储过程

1.Entity Framework Code First查询表或视图 var provincelist = ctx.Provinces.SqlQuery("SELECT TOP 10 * FROM Province"); foreach (var province in provincelist) { Console.WriteLine("{0}-{1}-{2}", province.ProvinceID, province.ProvinceNo, provinc

Entity Framework查询,EF执行SQl

一.简介 EF 支持开放底层的 ADO.NET 框架,DbContext有三种常用方法 DbSet.SqlQuery //查询并返回Entities DbContext.Database.SqlQuery<T> //执行某一个查询,并可以将返回集转换为某一对象 DbContext.Database.ExecuteSqlCommand //执行某一并无返回集的SQL 命令,例如UPDATE,DELETE操作 二.用法 1.DbSet.SqlQuery用法 var list = db.admins

Entity Framework 并发处理详解

引言 在软件开发过程中,并发控制是确保及时纠正由并发操作导致的错误的一种机制.从 ADO.NET 到 LINQ to SQL 再到如今的 ADO.NET Entity Framework,.NET 都为并发控制提供好良好的支持方案.并发处理方式一般分为乐观必并发与悲观必并发两种,本文将为大家介绍 Entity Framework . LINQ to SQL 中的并发处理方式.在本文最后,将提供一个了可参考的方案,结合事务 Transaction 处理复杂性对象的并发. 目录 一.并发处理的定义

C#综合揭秘——Entity Framework 并发处理详解

引言 在软件开发过程中,并发控制是确保及时纠正由并发操作导致的错误的一种机制.从 ADO.NET 到 LINQ to SQL 再到如今的 ADO.NET Entity Framework,.NET 都为并发控制提供好良好的支持方案. 并发处理方式一般分为乐观必并发与悲观必并发两种,本文将为大家介绍 Entity Framework . LINQ to SQL 中的并发处理方式.在本文最后,将提供一个了可参考的方案,结合事务 Transaction 处理复杂性对象的并发. 目录 一.并发处理的定义