EFCore數據庫遷移命令整理
http://www.siyouku.cn/article/6871.html
前言
因為現在用.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
3 跨平台命令行工具 ,Command line interface (CLI)
打開vscode 命令終端 輸入dotnet ef 后也能看到一直霸氣野馬的頭像,也將列出相關幫助信息
1.dotnet ef migrations add 生成一條遷移
2.dotnet ef migrations remove 刪除最新一次遷移
- 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