EntityFramework5發(fā)布,新功能介紹
今天 vs2012 .net Framework 4.5 EntityFramework 5.0 三者共同發(fā)布了。
因持續(xù)關(guān)注EF,所以每天都會(huì)關(guān)注ADO.NET官方博客(http://blogs.msdn.com/b/adonet/ ). EF5 Released,現(xiàn)總結(jié)一下,與大家分享。
在介紹新特性之前,先與大家回顧一下EF版本變化及一些重要變更:
框架 EF 備注
.net Framework 3.5 EF 1.0
.net Framework 4.0 EF 4.0 EF4.0是集成在 net framework中的,而4.1~4.4僅僅是在其上的引入,并非框架的本身
.net Framework 4.0 EF 4.1 引入了DbContext以及POCO模型,應(yīng)該算是很大改進(jìn)
.net Framework 4.0 EF 4.2 修復(fù)了4.1的幾個(gè)bug
.net Framework 4.0 EF 4.3 引入了Code First Migration.有了這個(gè)我們就不用通過(guò)丟棄數(shù)據(jù)庫(kù)修改表結(jié)構(gòu)了。
.net Framework 4.0 EF 4.4 修復(fù)了4.3的幾個(gè)bug,這個(gè)也是剛不久發(fā)布,很少人用,但是支持.net framework 4.0
.net Framework 4.5 EF 5.0 最新版本 包括四個(gè)新特性,之后會(huì)主要介紹。
EF 6.0 未來(lái)版本,未發(fā)布 據(jù)官方博客稱,將會(huì)脫離.net Framework單獨(dú)存在
首先, EF5.0的四個(gè)新特性的使用必須在.net framework 4.5下 ,相當(dāng)?shù)目拥瓦@樣不支持.net framework 4.0了,對(duì)于那些無(wú)法將服務(wù)器升級(jí)到.net framework 4.5(僅支持windows server 2008及以上)的產(chǎn)品項(xiàng)目微軟并不在乎,無(wú)限坑爹啊!!!!
EF5.0帶來(lái)了總共四個(gè)新特性:
1.Enum 類型的支持。
5.0帶來(lái)的最優(yōu)秀特性,Enum支持?jǐn)?shù)據(jù)庫(kù)對(duì)應(yīng)類型有 byte int16 int32 int64 SByte 5中數(shù)據(jù)庫(kù)類型。
這樣以后我們?cè)陂_(kāi)發(fā)的時(shí)候就無(wú)需再為了處理枚舉做一些多余的封裝了,真是大大減輕了開(kāi)發(fā)者的代碼量啊,很實(shí)質(zhì)。
同時(shí)支持Code Frist 以及通過(guò) EF設(shè)計(jì)器來(lái)設(shè)計(jì)
2.Spatial 類型的支持。 這個(gè)類型一般在地里定位的時(shí)候用到的類型,例如數(shù)據(jù)庫(kù)中存儲(chǔ) 經(jīng)度 或是 緯度的坐標(biāo)即可以通過(guò)此類型進(jìn)行存儲(chǔ)。現(xiàn)在做地里位置開(kāi)發(fā)的碼農(nóng)有福了。
同時(shí)支持Code Frist 以及通過(guò) EF設(shè)計(jì)器來(lái)設(shè)計(jì)
3.Table-Valued Functions 函數(shù)的支持。
僅支持 DataBase First ,也就是僅僅只能通過(guò)設(shè)計(jì)器來(lái)實(shí)現(xiàn)支持。
例如:
where s.Grade >= Grade
select new
{
s.Person,
s.Course.Title
};
紅色的部分就是我們?cè)跀?shù)據(jù)中寫(xiě)的創(chuàng)建的函數(shù)。 這個(gè)個(gè)人不經(jīng)常使用,主要是因?yàn)橛煤瘮?shù)寫(xiě)一些邏輯會(huì)帶來(lái)維護(hù)上的一些麻煩,成本很大。
4.編輯器個(gè)功能的加強(qiáng)。
可以在Context之間進(jìn)行實(shí)體的拖拽,以及一些實(shí)體設(shè)計(jì)器顏色變化的控制等等。 快速開(kāi)發(fā)的利器。主要因?yàn)槲液苌儆迷O(shè)計(jì)器開(kāi)發(fā),所以也很少關(guān)注,大部分時(shí)間全花在CodeFrist上了,設(shè)計(jì)器這種簡(jiǎn)單操作反而不會(huì)了,無(wú)所謂了,反正不喜歡設(shè)計(jì)器。
5.其實(shí)第五個(gè)可以不認(rèn)為是新特性,應(yīng)該算是性能的提升,EF5較之前版本在性能上有很大的提升,主要原因是由于對(duì)Linq ot Entity 緩存的處理。第一次通過(guò)Linq to Entity 查詢性能與之前版本幾乎一樣,但第二次及以后在進(jìn)行同樣查詢就大大不一樣了,由于緩存了之前的查詢,大大減少了數(shù)據(jù)的查詢時(shí)間。
再就是在EF5中,默認(rèn)創(chuàng)建的Context是DbContext了,以前默認(rèn)ObjectContext需要手動(dòng)改。從這點(diǎn)可以看出微軟是十分推崇DbContext的,因?yàn)樗拇_為我們帶來(lái)了許多方便,但是我們?nèi)钥梢郧袚Q到ObjectContext,畢竟OjbectContext還是有許多底層?xùn)|西的,DbContext僅僅是在他之上進(jìn)行了一些封裝。
也就總結(jié)道這些吧,本人不太會(huì)寫(xiě)博客,很潦草,大家勉強(qiáng)看看吧。 有不對(duì)的請(qǐng)指出。
題外話:
其實(shí)我很好奇,EF5如果有什么Bug,微軟要怎樣應(yīng)對(duì)版本的升級(jí)呢? 又要EF5.1 EF5.2 無(wú)線的....嗎?這樣講5.0集成在.net framework 4.5中有什么意義。你不可能因?yàn)镋F5.0的一個(gè)小bug重新發(fā)布.net framework吧?天呢?好像我不應(yīng)該考慮。

浙公網(wǎng)安備 33010602011771號(hào)