EFCore數據庫遷移命令


前言 

     因為現在用.net core 開發新項目,過程中需要經常涉及到數據命令的遷移,今天分別整EFCore 的兩種遷移數據庫的方式 

程序包管理器控制台 , 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的相關幫助文檔了 ,入下圖

  1. add-migration  這個命令一般都不會有啥問題輸入命令回車在輸入遷移名稱就ok

  2. remove-migration 這個也是如果想刪除最后一次遷移 直接執行就好

  3. update-database 第一步添加一個遷移文件成功后,可以用該命令直接更新到數據庫,默認是所有遷移,如果想指定遷移直接加上遷移文件的名字就好了,如:update-database migrationName,也相當於版本回滾操,比如有版本1,2,3 此時我想回滾到版本1  就直接 update-database 1,此時數據庫中已經更新到1版本了,然后在兩次remove-migration把2和3的遷移文件刪除就好了

  4. Script-Migration  這個命令用於生成遷移文件對應的sql語句的,跟之前的ef貌似有些不一樣,該命令如果不加任何參數 是默認生成所有遷移文件對應的sql語句,當然也參照格式指定餐宿

     Script-Migration -From migrationName1 -To migrationName2  -Context ContextName

     有意思的是 ,它不會生成from對應的遷移文件的sql,也就是說想上面這么寫只會生生成migrationName2的sql語句,那么問題來了 ,需要生成第一個遷移文件的sql怎么辦?經過查看官方文檔,需要指定from參數為0,也就是  Script-Migration -From 0

  5. 最后溫馨提示 使用 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腳本


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM