前言 因為現在用.net core 開發新項目,過程中需要經常涉及到數據命令的遷移,今天分別整EFCore 的兩種遷移資料庫的方式 1 程式包管理器控制台 , Package Manager Console(PMC) -如果你用visual studio 開發建議使用PMC遷移方式,該方式是同時支持 ...
前言
因為現在用.net core 開發新項目,過程中需要經常涉及到數據命令的遷移,今天分別整EFCore 的兩種遷移資料庫的方式
1 程式包管理器控制台 , Package Manager Console(PMC)
-如果你用visual studio 開發建議使用PMC遷移方式,該方式是同時支持efcore和原先的ef 遷移的
2 命令行工具 ,Command line interface (CLI)
-該方式適用於跨平臺開發的時候進行遷移資料庫的,也就是可脫離visual studio,比如你用vs code,或直接打開cmd控制台進行操作
1.下麵先列出兩種方式對比,然後再分用vs 和vscode分別詳細說明
遷移命令描述 | CLI命令 | PMC命令 |
---|---|---|
創建遷移:migrationname為遷移名稱 | dotnet ef migrations add migrationName | add-migration migrationName |
移除遷移(刪除最近的一次遷移) | dotnet ef migrations remove | remove-migration |
應用所有的遷移(使遷移文件應用到資料庫) | dotnet ef database update | update-database |
指定版本進行遷移 | dotnet ef database update migrationName | update-database migrationName |
生成對應版本的腳本 | dotnet ef migrations script | Script-Migration |
查看遷移列表 | dotnet ef migrations list | |
查看資料庫上下文信息 | dotnet ef dbcontext info |
2.程式包管理器控制台 , Package Manager Console(PMC)
打開visual studio 程式包管理控制台,首先要善於使用pmc的幫助,輸入get-help 查看幫助信息,根據提示我們可以輸入 get-help about_entityframework 獲取幫助信息,輸入命令後我們應該能看到一隻霸氣的野馬頭像 ,頭像下麵就是efcore的相關幫助文檔了 ,入下圖
-
add-migration 這個命令一般都不會有啥問題輸入命令回車在輸入遷移名稱就ok
-
remove-migration 這個也是如果想刪除最後一次遷移 直接執行就好
-
update-database 第一步添加一個遷移文件成功後,可以用該命令直接更新到資料庫,預設是所有遷移,如果想指定遷移直接加上遷移文件的名字就好了,如:update-database migrationName,也相當於版本回滾操,比如有版本1,2,3 此時我想回滾到版本1 就直接 update-database 1,此時資料庫中已經更新到1版本了,然後在兩次remove-migration把2和3的遷移文件刪除就好了
-
Script-Migration 這個命令用於生成遷移文件對應的sql語句的,跟之前的ef貌似有些不一樣,該命令如果不加任何參數 是預設生成所有遷移文件對應的sql語句,當然也參照格式指定餐宿
Script-Migration -From migrationName1 -To migrationName2 -Context ContextName
有意思的是 ,它不會生成from對應的遷移文件的sql,也就是說想上面這麼寫只會生生成migrationName2的sql語句,那麼問題來了 ,需要生成第一個遷移文件的sql怎麼辦?經過查看官方文檔,需要指定from參數為0,也就是 Script-Migration -From 0
-
最後溫馨提示 使用 Get-Help <cmdlet-name>即可獲取對應命令文檔,如 get-help update-databa
3 跨平臺命令行工具 ,Command line interface (CLI)
打開vscode 命令終端 輸入dotnet ef 後也能看到一直霸氣野馬的頭像,也將列出相關幫助信息
1.dotnet ef migrations add 生成一條遷移
2.dotnet ef migrations remove 刪除最新一次遷移
3. dotnet ef database update 生成遷移到資料庫,跟上面pmc命令類似 後面加指定的遷移作為參數可以進行版本的回滾
4.dotnet ef migrations script 也跟pmc類似 如果沒有任何參數的話預設是生成所有sql腳本,但是參數格式略有不同如下:dotnet ef migrations script migrationName1 migrationName2 ; 是像這樣直接跟遷移名稱的也就是生成migrationName1 到migrationName2 的sql腳本
相關鏈接:
官方文檔:https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/
efcore相對之前ef的一些變更:https://msdn.microsoft.com/magazine/mt614250
efcore反向工程dbfirst:https://code.msdn.microsoft.com/How-to-using-Entity-1464feea
本文永久更新地址:http://siyouku.cn/article/6871.html
asp.net core 開發框架:https://github.com/2014fighting/CodeFrame.Web.git