您好,登錄后才能下訂單哦!
這篇文章給大家介紹EF架構codeFirst從初始化到數據庫遷移的過程是怎樣的,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
CodeFirst是EntityFrameworks的一種開發模式,即代碼優先,它以業務代碼為主,通過代碼來生成數據庫,并且加上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
關于EF架構codeFirst從初始化到數據庫遷移的過程是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。