溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

EF架構(gòu)codeFirst從初始化到數(shù)據(jù)庫遷移的過程是怎樣的

發(fā)布時(shí)間:2021-11-30 15:19:25 來源:億速云 閱讀:136 作者:柒染 欄目:數(shù)據(jù)庫

這篇文章給大家介紹EF架構(gòu)codeFirst從初始化到數(shù)據(jù)庫遷移的過程是怎樣的,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

一些介紹

CodeFirst是EntityFrameworks的一種開發(fā)模式,即代碼優(yōu)先,它以業(yè)務(wù)代碼為主,通過代碼來生成數(shù)據(jù)庫,并且加上migration的強(qiáng)大數(shù)據(jù)表比對(duì)功能來生成數(shù)據(jù)庫版本,讓程序開發(fā)人員不用維護(hù)數(shù)據(jù)庫的變更,而直接維護(hù)migration即可,在它里面有你當(dāng)前版本和過去歷史版本的所有變更記錄!

進(jìn)行Migration數(shù)據(jù)庫版本控制

(1)通過EF-CodeFirst自己幫我們建立了數(shù)據(jù)庫,初始化的數(shù)據(jù)表

第一次建立數(shù)據(jù)模型,運(yùn)行程序,自動(dòng)建立數(shù)據(jù)庫和數(shù)據(jù)表,并執(zhí)行對(duì)應(yīng)的初始化工作

數(shù)據(jù)模型

EF架構(gòu)codeFirst從初始化到數(shù)據(jù)庫遷移的過程是怎樣的

數(shù)據(jù)初始化

EF架構(gòu)codeFirst從初始化到數(shù)據(jù)庫遷移的過程是怎樣的

EF在LindAgile里的注冊(cè)

EF架構(gòu)codeFirst從初始化到數(shù)據(jù)庫遷移的過程是怎樣的

數(shù)據(jù)庫第一次被創(chuàng)建,數(shù)據(jù)表名的名稱,可以控制它的單數(shù)和復(fù)數(shù)形式

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {            // 注意表單復(fù)數(shù)形式時(shí),實(shí)體不能有下劃線,必須是單詞       modelBuilder.Conventions.Remove<System.Data.Entity.ModelConfiguration.Conventions.PluralizingTableNameConvention>();
     }

EF架構(gòu)codeFirst從初始化到數(shù)據(jù)庫遷移的過程是怎樣的

其中__MigrationHistory表,它是數(shù)據(jù)變更的數(shù)據(jù)表,體現(xiàn)了數(shù)據(jù)庫的歷史

EF架構(gòu)codeFirst從初始化到數(shù)據(jù)庫遷移的過程是怎樣的

(2)開始數(shù)據(jù)遷移

這時(shí),我們看解決方案里,沒有migrations文件夾,因?yàn)檫@時(shí)你沒有開啟變更計(jì)劃

當(dāng)開啟變更后,才會(huì)出現(xiàn)這個(gè)文件夾

EF架構(gòu)codeFirst從初始化到數(shù)據(jù)庫遷移的過程是怎樣的

 Enable-Migrations

然后在項(xiàng)目中就看到了migrations文件夾,它將存儲(chǔ)我們數(shù)據(jù)庫的變更記錄

EF架構(gòu)codeFirst從初始化到數(shù)據(jù)庫遷移的過程是怎樣的

 我們?nèi)绻绿砑恿藬?shù)據(jù)實(shí)體DO,或者修改了原來的實(shí)體,然后希望升級(jí)一個(gè)變更記錄,可以使用add-migration 變更名(隨便寫)

EF架構(gòu)codeFirst從初始化到數(shù)據(jù)庫遷移的過程是怎樣的

然后在我們項(xiàng)目的Migrations目錄會(huì)多一個(gè)變更文件,它以時(shí)間戳開頭,我們?cè)谧兏鼒?zhí)行時(shí),這個(gè)時(shí)間戳是它順序執(zhí)行的關(guān)鍵

EF架構(gòu)codeFirst從初始化到數(shù)據(jù)庫遷移的過程是怎樣的

(3)把模型的變更更新到數(shù)據(jù)庫

同時(shí),我們看一個(gè)數(shù)據(jù)表__MigrationHistory,它沒有發(fā)生變化,這是因?yàn)槲覀儧]有把變更更新到數(shù)據(jù)庫,如果希望更新到數(shù)據(jù)庫,可以使用update-database來實(shí)現(xiàn),如果不加版本號(hào),默認(rèn)更新的是最新的變更記錄,它會(huì)包括之前的變更代碼,在更新時(shí)它會(huì)與數(shù)據(jù)表__MigrationHistory里的變更記錄進(jìn)行對(duì)比,如果已經(jīng)更新過了,就不會(huì)執(zhí)行這個(gè)版本,而只會(huì)向后更新!

EF架構(gòu)codeFirst從初始化到數(shù)據(jù)庫遷移的過程是怎樣的

執(zhí)行完成后,我們?cè)倏匆幌聰?shù)據(jù)表的變化,它也會(huì)多一條最新的變更記錄,以后我們?cè)儆袛?shù)據(jù)表變更,就使用這個(gè)方法即可,EF-migration只要我們好好用,它只會(huì)使我們的開發(fā)便得更快捷!

EF架構(gòu)codeFirst從初始化到數(shù)據(jù)庫遷移的過程是怎樣的

(4)把模型的變更成SQL腳本,以便在生產(chǎn)環(huán)境中使用

Update-Database -Script -SourceMigration: $InitialDatabase -TargetMigration:init

關(guān)于EF架構(gòu)codeFirst從初始化到數(shù)據(jù)庫遷移的過程是怎樣的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI