文章出處

一些介紹

CodeFirst是EntityFrameworks的一種開發模式,即代碼優先,它以業務代碼為主,通過代碼來生成數據庫,并且加上migration的強大數據表比對功能來生成數據庫版本,讓程序開發人員不用維護數據庫的變更,而直接維護migration即可,在它里面有你當前版本和過去歷史版本的所有變更記錄!

大叔寫過的Migration的文章

第六十回 EF架構~CodeFirst生產環境的Migrations

第六十二回 EF架構~Migration數據遷移的執行順序

開始今天的《一步一步帶您進行Migration數據庫版本控制的學習之旅》

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

第一次建立數據模型,運行程序,自動建立數據庫和數據表,并執行對應的初始化工作

數據模型

數據初始化

EF在LindAgile里的注冊

數據庫第一次被創建,數據表名的名稱,可以控制它的單數和復數形式

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

其中__MigrationHistory表,它是數據變更的數據表,體現了數據庫的歷史

(2)開始數據遷移

這時,我們看解決方案里,沒有migrations文件夾,因為這時你沒有開啟變更計劃

當開啟變更后,才會出現這個文件夾

 Enable-Migrations

然后在項目中就看到了migrations文件夾,它將存儲我們數據庫的變更記錄

 我們如果新添加了數據實體DO,或者修改了原來的實體,然后希望升級一個變更記錄,可以使用add-migration 變更名(隨便寫)

然后在我們項目的Migrations目錄會多一個變更文件,它以時間戳開頭,我們在變更執行時,這個時間戳是它順序執行的關鍵

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

同時,我們看一個數據表__MigrationHistory,它沒有發生變化,這是因為我們沒有把變更更新到數據庫,如果希望更新到數據庫,可以使用update-database來實現,如果不加版本號,默認更新的是最新的變更記錄,它會包括之前的變更代碼,在更新時它會與數據表__MigrationHistory里的變更記錄進行對比,如果已經更新過了,就不會執行這個版本,而只會向后更新!

執行完成后,我們再看一下數據表的變化,它也會多一條最新的變更記錄,以后我們再有數據表變更,就使用這個方法即可,EF-migration只要我們好好用,它只會使我們的開發便得更快捷!

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

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

上面代碼執行后會生成一個SQL文件,我們拿這個文件可以到生產環境中去執行,就完成了數據庫的更新!

希望本文對各位有所幫助!

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()