日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Entity Framework 与 LINQ to SQL

發(fā)布時(shí)間:2024/6/18 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Entity Framework 与 LINQ to SQL 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Entity Framework和LINQ to SQL到底有什么區(qū)別?這是一個(gè)很常見的問題。下面的表中簡要羅列了兩種技術(shù)的主要區(qū)別。


?

LINQ to SQL

Entity Framework

復(fù)雜度

相對不復(fù)雜

相對比較復(fù)雜

模型

域模型(Domain model)

概念數(shù)據(jù)模型(Conceptual data model)

數(shù)據(jù)庫服務(wù)器

SQL Server

多種數(shù)據(jù)庫產(chǎn)品

開發(fā)時(shí)間

快速應(yīng)用開發(fā)

需要較長時(shí)間,但支持更多特性

繼承

困難

容易

文件類型

DBML文件

EDMX,CDSL,MSL,SSDL文件

復(fù)雜類型支持

不支持

支持

查詢能力

通過DataContext

ESQL,對象服務(wù), Entity Client

性能

第一次查詢較慢

第一次查詢也較慢,但總體優(yōu)與LINQ to SQL

完善

不再出新版本

還出新版本

從模型生成數(shù)據(jù)庫

不支持

支持

?

復(fù)雜度:支持越多的特性就會越復(fù)雜。LINQ to SQL所支持的特性比較少,所以也就相對不太復(fù)雜;而EntityFramework支持的特性比較多,所以相對比較復(fù)雜。

模型:LINQ to SQL在數(shù)據(jù)表與類之間提供了一對一的映射。如果你有Customers,Orders, 和Lineitems表,你就會有Customer,Order, 和Lineitem類來匹配每一個(gè)表。EntityFramework可以使你有一個(gè)Customer類,而這個(gè)類可以匹配多個(gè)表。這就意味著公司名可以 在一個(gè)表中,但是地址是在另一個(gè)表中,而電話號碼又在另一個(gè)表中,等等。

數(shù)據(jù)庫服務(wù)器:LINQ to SQL只支持Microsoft SQL Server 2000及之后的版本,但即使是SQLServer2000也有很多限制。EntityFramework可以支持IBMDB2, Sybase SqlAnywhere, Oracle, SQLAzure,還有其他很多。

開發(fā)時(shí)間:LINQ to SQL很容易學(xué),開發(fā)起來也很快,但是LINQ to SQL有一些限制,在開發(fā)較復(fù)雜的應(yīng)用時(shí)可能會產(chǎn)生問題。EntityFramework的能力更強(qiáng),雖然學(xué)習(xí)及應(yīng)用起來比較慢,但是對更多的特性的支持使得在開發(fā)較復(fù)雜的應(yīng)用時(shí)可以使問題最小化。

繼承:LINQ to SQL支持TPH,而EntityFramework支持TPH和TPT,并且對TPC也部分支持。

文件類型:LINQ to SQL使用包含XML的數(shù)據(jù)庫標(biāo)記語言(DBML)文件來映射entity與數(shù)據(jù)表。EntityFramework 使用四個(gè)文件。第一個(gè)是Entity Data Model (EDMX),這個(gè)是在設(shè)計(jì)器中使用的。在編譯時(shí)EDMX文件產(chǎn)生了其他三個(gè)文件。另外三個(gè)文件中,第一個(gè)是ConceptualSchema Definition Language(CSDL)文件,其包含概念模型的XML定義。第二個(gè)是SchemaDefinition Language(SSDL)文件,其包含存儲模型的定義。第三個(gè)文件是Mapping Specification Language(MSL)文件,其包含概念模型與存儲模型之間的映射。

復(fù)雜類型支持:比如說,一個(gè)客戶有電話號碼,但你想要電話號碼定義為國家區(qū)號,地區(qū)號,城市區(qū)號,號碼和分機(jī)號。LINQto SQL不支持這種復(fù)雜類型,而EntityFramework支持。

查詢能力:LINQ to SQL通過DataContext對數(shù)據(jù)庫進(jìn)行查詢。EntityFramework通過ObjectContext通過LINQto Entities進(jìn)行查詢。Entity Framework還提供了ESQL,它是一種類似SQL的查詢語言,很適合在模型定義中定義查詢。EntityFramework還包含了 ObjectQuery類,用于對象服務(wù)在運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建查詢。最后EntityFramework還包含EntityClientProvider,它 用于對概念模型進(jìn)行查詢。

性能:LINQ to SQL和Entity Framework第一次執(zhí)行查詢的時(shí)候都比較慢,但之后性能都讓人比較滿意。EntityFramework性能要稍微優(yōu)于LINQto SQL。

完善:微軟在發(fā)布了Entity Framework之后就停止了發(fā)布新的LINQ to SQL,但由于LINQto SQL的簡單性,它還是很受歡迎的,所以微軟仍將繼續(xù)對LINQto SQL的用戶進(jìn)行支持與反饋,但是LINQto SQL將不再發(fā)布新版本進(jìn)行完善。

由模型生成數(shù)據(jù)庫:LINQ to SQL沒有能力由模型生成數(shù)據(jù)庫。Entity Framework支持兩種類型的開發(fā)模式,數(shù)據(jù)庫優(yōu)先和編碼優(yōu)先。數(shù)據(jù)庫優(yōu)先開發(fā),數(shù)據(jù)庫已經(jīng)存在,所以不需要由模型生成數(shù)據(jù)庫。編碼優(yōu)先,你要先創(chuàng)建你的模型,然后由模型生成數(shù)據(jù)庫。

轉(zhuǎn)載于:https://www.cnblogs.com/tianguook/p/3942390.html

總結(jié)

以上是生活随笔為你收集整理的Entity Framework 与 LINQ to SQL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。