最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

.Neter們,你真的應(yīng)該了解下EntityFrameworkCore3.x

2020-04-01 14:46 作者:朝夕教育  | 我要投稿


本期導(dǎo)讀:

技術(shù)文,帶你了解關(guān)于EntityFrameworkCore3.x的那些事,本文共1493個(gè)字,閱讀大約需要3分鐘。文末福利不要錯(cuò)過(guò)哦!

是的各位.Neter,不用懷疑,使用O/RM的開(kāi)發(fā)者越來(lái)越多了,從風(fēng)起云涌的各式O/RM框架都可見(jiàn)一斑了。以下是我用過(guò)的一些。

  1. NHibernate

  2. SqlSugar

  3. Dos.ORM

  4. Dapper?

  5. PetaPoco

  6. EntityFramework?

  7. EntityFrameworkCore

其中NHibernate是我使用過(guò)的第一個(gè)O/RM框架,開(kāi)始驚艷慢慢乏味,輕量級(jí)的Dapper也深受喜愛(ài)。奈何我是微軟忠粉,從最早的未完成產(chǎn)品LinqToSql追到EntityFramework的N個(gè)版本,然后終于在.NetCore里面尋到了我想要的O/RM,EntityFramworkCore3.1(后續(xù)簡(jiǎn)稱EFCore)。下面我認(rèn)真給.Neter們科普下EFCore的新東西,相信你也會(huì)愛(ài)上的。


一 直面O/RM性能差

說(shuō)到O/RM,很多人會(huì)嗤之以鼻,性能差,這是真的嗎?所謂ORM,其實(shí)就是用面向?qū)ο蟮乃枷雭?lái)封裝對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)操作,能以操作對(duì)象的方式來(lái)完成數(shù)據(jù)庫(kù)的操作。開(kāi)發(fā)者不用關(guān)心數(shù)據(jù)庫(kù),甚至可以完全不用寫(xiě)Sql,確實(shí)是件好事兒!那為啥會(huì)說(shuō)性能差呢?

成也蕭何敗也蕭何,正是因?yàn)樽詣?dòng)化了數(shù)據(jù)庫(kù)操作,該過(guò)程是僵硬的,會(huì)導(dǎo)致在復(fù)雜的數(shù)據(jù)庫(kù)環(huán)境下無(wú)法保障性能。但這怪O/RM框架嗎?一方面O/RM設(shè)計(jì)的目標(biāo)只是簡(jiǎn)化Sql,另一方面來(lái)說(shuō),使用O/RM性能差更多是使用的問(wèn)題,而不是框架的問(wèn)題。沒(méi)有低性能的框架,只有不會(huì)用的開(kāi)發(fā)者!當(dāng)然,優(yōu)秀的框架是能讓開(kāi)發(fā)者更簡(jiǎn)單更高效,EFCore里面,就有多個(gè)跟性能相關(guān)的新特性,一起來(lái)看看!

EFCore前世今生

2008年發(fā)布了EntityFramework第一個(gè)版本3.5,到2017年發(fā)布的6.2.0最新版本,累計(jì)發(fā)布了16個(gè)正式版本,常規(guī)O/RM框架能做的事兒,EF也已經(jīng)做得非常優(yōu)秀了。而EFCore則是站在巨人的肩膀上的,當(dāng)下最新版本EFCore3.1還包含了多個(gè)前所未有的新特性,可謂是開(kāi)發(fā)者福音!(為配合.Net5,EFCore下一個(gè)版本也叫EFCore5)

(1)Sql索引支持

數(shù)據(jù)查詢時(shí),通過(guò)控制linq語(yǔ)句順序,可以做到走索引,現(xiàn)在EFCore在Code Fitst時(shí),在ModelCreating里面可以直接配置非聚集索引了,主鍵還是默認(rèn)聚集索引的。擔(dān)心O/RM性能的小伙伴兒,有必要來(lái)好好看看。

(2)數(shù)據(jù)庫(kù)讀寫(xiě)分離支持

讀寫(xiě)分離是中大型項(xiàng)目必備了,EFCore本身可以通過(guò)option來(lái)支持,輕松實(shí)現(xiàn)單Context連接多數(shù)據(jù)庫(kù),完成數(shù)據(jù)庫(kù)讀寫(xiě)分離支持。不過(guò)在實(shí)際開(kāi)發(fā)中,我更愿意封裝一層ContextFactory來(lái)管控,還能做到復(fù)雜均衡。

(3)便攜數(shù)據(jù)庫(kù)遷移

項(xiàng)目開(kāi)發(fā)中,數(shù)據(jù)庫(kù)結(jié)構(gòu)的變更一般都是腳本支持,面對(duì)數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)的的變更,數(shù)據(jù)的升級(jí),只能編寫(xiě)復(fù)雜的Sql腳本;老師就有過(guò)慘痛的經(jīng)歷。而EFCore徹底解決了這個(gè)問(wèn)題,每次數(shù)據(jù)庫(kù)結(jié)構(gòu)的變化,都可以保存一個(gè)數(shù)據(jù)庫(kù)遷移文件,遷移文件輕松生成數(shù)據(jù)庫(kù)。每個(gè)遷移文件對(duì)應(yīng)數(shù)據(jù);任何時(shí)期,都可以根據(jù)對(duì)應(yīng)的遷移文件生成數(shù)據(jù)庫(kù)。

1 EFCore內(nèi)置Api直接生成數(shù)據(jù)庫(kù),一次配置輕松生成


2 EFTool工具遷移數(shù)據(jù)庫(kù),生成遷移文件再生成數(shù)據(jù)庫(kù)


3 dotNet命令遷移,生成遷移文件,生成數(shù)據(jù)庫(kù)

(4)內(nèi)置數(shù)據(jù)轉(zhuǎn)換器

使用O/RM開(kāi)發(fā)的小伙伴兒,基本上都離不開(kāi)AutoMapper,因?yàn)榭倳?huì)有些數(shù)據(jù)在存儲(chǔ)和程序中的類型不一致,現(xiàn)在EFCore中直接內(nèi)置了數(shù)據(jù)轉(zhuǎn)換器,還支持自定義模式,原生支持讓性能更高使用更輕松!

(5)各種數(shù)據(jù)庫(kù)支持

EFCore基本上已經(jīng)覆蓋了市面上全部的主流關(guān)系型數(shù)據(jù)庫(kù),甚至還支持了內(nèi)存數(shù)據(jù)庫(kù)。一招鮮可以吃遍天了,簡(jiǎn)直了~ 說(shuō)到封裝框架,我不是針對(duì)誰(shuí),微軟獨(dú)一檔!下面是整理的詳細(xì)清單:

以上是EFCore中相對(duì)其他O/RM框架的一些新特性和優(yōu)勢(shì),此外要在開(kāi)發(fā)中應(yīng)用好EFCore,還有蠻多需要學(xué)習(xí)的,比如數(shù)據(jù)初始化、Linq查詢、復(fù)雜查詢、延遲加載、惰性加載、級(jí)聯(lián)刪除、內(nèi)置假刪除,還有分布式環(huán)境下的數(shù)據(jù)一致性,分布式事務(wù)等等,都是不可或缺的。

這里給大家推薦一個(gè)EFCore專題課,一周特訓(xùn),各種知識(shí)點(diǎn)一網(wǎng)打盡,原價(jià)288元課程本公眾號(hào)粉絲限時(shí)免費(fèi),直接掃碼進(jìn)專用學(xué)習(xí)交流群!

文末福利:

按照慣例,再給大家來(lái)些福利了。本次專題是Asp.NetCore3.1+EFCore實(shí)戰(zhàn),需要配套的知識(shí)點(diǎn)很多,下面整理了一套預(yù)習(xí)資料,包括有我之前一套手寫(xiě)O/RM框架的源碼,值得看看,趕緊掃碼領(lǐng)取哈。

掃碼領(lǐng)取


.Neter們,你真的應(yīng)該了解下EntityFrameworkCore3.x的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
时尚| 台北县| 银川市| 南投县| 丘北县| 富平县| 绍兴市| 五家渠市| 林口县| 出国| 卢龙县| 汝州市| 两当县| 双鸭山市| 四子王旗| 云阳县| 宁陕县| 和静县| 台中市| 苏尼特左旗| 军事| 密山市| 勃利县| 长丰县| 商丘市| 新乡县| 登封市| 南宫市| 调兵山市| 永仁县| 丁青县| 扎赉特旗| 灵川县| 马鞍山市| 乌兰浩特市| 扎兰屯市| 普兰店市| 建始县| 石狮市| 高密市| 馆陶县|