SQL Server[转]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。

完善:微软SQL Server以发表了Entity Framework之后就是停了揭晓新的LINQ to
SQL,但由LINQto
SQL的简单性,它还是特别为欢迎之,所以微软按照用继承本着LINQto
SQL的用户展开支撑以及反馈,但是LINQto SQL将不再发布新本子进行完善。

由模型生成数据库:LINQ to SQL没有能力由模型生成数据库。Entity
Framework支持少数种类型的支出模式,数据库优先和编码优先。数据库优先开发,数据库都存在,所以未需由模型生成数据库。编码优先,你只要先创造而的模型,然后由模型生成数据库。

 

原文出自《Access
Data with Microsoft .NET Framework 4》

 

相关文章