共計 1370 個字符,預計需要花費 4 分鐘才能閱讀完成。
這篇文章給大家介紹 EF 架構 codeFirst 從初始化到數據庫遷移的過程是怎樣的,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
一些介紹
CodeFirst 是 EntityFrameworks 的一種開發模式,即代碼優先,它以業務代碼為主,通過代碼來生成數據庫,并且加上 migration 的強大數據表比對功能來生成數據庫版本,讓程序開發人員不用維護數據庫的變更,而直接維護 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 從初始化到數據庫遷移的過程是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。