這篇文章給大家介紹EF架構codeFirst從初始化到數(shù)據(jù)庫遷移的過程是怎樣的,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
CodeFirst是EntityFrameworks的一種開發(fā)模式,即代碼優(yōu)先,它以業(yè)務代碼為主,通過代碼來生成數(shù)據(jù)庫,并且加上migration的強大數(shù)據(jù)表比對功能來生成數(shù)據(jù)庫版本,讓程序開發(fā)人員不用維護數(shù)據(jù)庫的變更,而直接維護migration即可,在它里面有你當前版本和過去歷史版本的所有變更記錄!
(1)通過EF-CodeFirst自己幫我們建立了數(shù)據(jù)庫,初始化的數(shù)據(jù)表
第一次建立數(shù)據(jù)模型,運行程序,自動建立數(shù)據(jù)庫和數(shù)據(jù)表,并執(zhí)行對應的初始化工作
數(shù)據(jù)模型
數(shù)據(jù)初始化
EF在LindAgile里的注冊
數(shù)據(jù)庫第一次被創(chuàng)建,數(shù)據(jù)表名的名稱,可以控制它的單數(shù)和復數(shù)形式
protected override void OnModelCreating(DbModelBuilder modelBuilder) { // 注意表單復數(shù)形式時,實體不能有下劃線,必須是單詞 modelBuilder.Conventions.Remove(); }
其中__MigrationHistory表,它是數(shù)據(jù)變更的數(shù)據(jù)表,體現(xiàn)了數(shù)據(jù)庫的歷史
(2)開始數(shù)據(jù)遷移
這時,我們看解決方案里,沒有migrations文件夾,因為這時你沒有開啟變更計劃
當開啟變更后,才會出現(xiàn)這個文件夾
Enable-Migrations
然后在項目中就看到了migrations文件夾,它將存儲我們數(shù)據(jù)庫的變更記錄
我們?nèi)绻绿砑恿藬?shù)據(jù)實體DO,或者修改了原來的實體,然后希望升級一個變更記錄,可以使用add-migration 變更名(隨便寫)
然后在我們項目的Migrations目錄會多一個變更文件,它以時間戳開頭,我們在變更執(zhí)行時,這個時間戳是它順序執(zhí)行的關鍵
(3)把模型的變更更新到數(shù)據(jù)庫
同時,我們看一個數(shù)據(jù)表__MigrationHistory,它沒有發(fā)生變化,這是因為我們沒有把變更更新到數(shù)據(jù)庫,如果希望更新到數(shù)據(jù)庫,可以使用update-database來實現(xiàn),如果不加版本號,默認更新的是最新的變更記錄,它會包括之前的變更代碼,在更新時它會與數(shù)據(jù)表__MigrationHistory里的變更記錄進行對比,如果已經(jīng)更新過了,就不會執(zhí)行這個版本,而只會向后更新!
執(zhí)行完成后,我們再看一下數(shù)據(jù)表的變化,它也會多一條最新的變更記錄,以后我們再有數(shù)據(jù)表變更,就使用這個方法即可,EF-migration只要我們好好用,它只會使我們的開發(fā)便得更快捷!
(4)把模型的變更成SQL腳本,以便在生產(chǎn)環(huán)境中使用
Update-Database -Script -SourceMigration: $InitialDatabase -TargetMigration:init
關于EF架構codeFirst從初始化到數(shù)據(jù)庫遷移的過程是怎樣的就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。