[转]Entity Framework vs. LINQ to SQL

本文转自:http://blog.csdn.net/jfchef/article/details/7632872

Entity Framework和LINQ to
SQL到底有啥界别?那是1个很宽泛的难题。上面包车型客车表中简要罗列了三种技术的第3分歧。

 

 

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在数据表与类之间提供了1对1的照射。假若你有Customers,Orders,
和Lineitems表,你就会有Customer,Order,
和Lineitem类来合营每一个表。EntityFramework能够使你有贰个Customer类,而以此类可以匹配八个表。那就表示商行名能够在一个表中,但是地点是在另贰个表中,而电话号码又在另三个表中,等等。

数据库服务器:LINQ to SQL只援助Microsoft SQL Server
三千及其后的版本,但尽管是SQLServer两千也有成都百货上千限量。EntityFramework能够支撑IBMDB贰,
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定义。第1个是SchemaDefinition
Language(SSDL)文件,其蕴藉存款和储蓄模型的定义。第多个文本是Mapping
Specification Language(MSL)文件,其涵盖概念模型与存款和储蓄模型之间的炫耀。

复杂类型帮助:例如,2个客户有电话号码,但您想要电话号码定义为国家区号,地区号,城市区号,号码和分机号。LINQto
SQL不帮衬那种复杂类型,而EntityFramework援助。

询问能力:LINQ to
SQL通过DataContext对数据库进行查询。EntityFramework通过ObjectContext通过LINQto
Entities举办询问。Entity
Framework还提供了ESQL,它是1种恍若SQL的查询语言,很适合在模型定义中定义查询。EntityFramework还包括了ObjectQuery类,用于对象服务在运作时动态成立查询。最终EntityFramework还富含EntityClientProvider,它用来对概念模型举办询问。

性能:LINQ to SQL和Entity
Framework第3遍执行查询的时候都相比慢,但从此质量都令人相比满足。EntityFramework品质要有些优于LINQto
SQL。

完善:微软在公布了Entity Framework之后就停下了公布新的LINQ to
SQL,但出于LINQto
SQL的简单性,它照旧备受欢迎的,所以微软仍将继续对LINQto
SQL的用户进行帮助与申报,可是LINQto SQL将不再发表新本子举行周全。

由模型生成数据库:LINQ to SQL未有能力由模型生成数据库。Entity
Framework资助三种档次的支出形式,数据库优先和编码优先。数据库优先支付,数据库已经存在,所以不须要由模型生成数据库。编码优先,你要先成立你的模子,然后由模型生成数据库。

 

原来的书文出自《Access
Data with Microsoft .NET Framework 四》

 

相关文章