SQL Server[转]Entity Framework vs. LINQ to SQL

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

Entity Framework和LINQ to
SQL到底有哪些分别?那是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在数据表与类之间提供了一定的照耀。即便你有Customers,Orders,
和Lineitems表,你就会有Customer,Order,
和Lineitem类来合作每二个表。EntityFramework能够使你有1个Customer类,而以此类能够协作多少个表。那就代表商家名能够在贰个表中,可是地点是在另一个表中,而电话号码又在另三个表中,等等。

数据库服务器:LINQ to SQL只支持Microsoft SQL Server
两千及未来的版本,但固然是SQLServer三千也有众多范围。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协助二种档次的开销格局,数据库优先和编码优先。数据库优先支付,数据库已经存在,所以不需求由模型生成数据库。编码优先,你要先创制你的模型,然后由模型生成数据库。

 

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

 

相关文章