2023年11月30日 星期四

EF Core 取得Migration 版本之間差異的 SQL Script

很不幸的有時候正式環境的諸多限制,不能請維運處理 migration 的指令,僅能提供 SQL Script 語法

,再請 DBA 協助執行更新的動作,此時若能快速產生異動的 SQL Script 那就太棒了...



要使用 CodeFirst 之前,需安裝套件

Microsoft.EntityFrameworkCore.SqlServer

Microsoft.EntityFrameworkCore.Tools


若目前是既有DB,需要先將目前的DB 狀況記錄下來,可使用以下指定紀錄

dotnet ef migrations add InitialCreate


建立後檢視檔案,前方流水號為自動產生


接著調整 Person 資料表新增 Gender 屬性




跑建置後,透過指令產生 migration 檔案,指令如下

dotnet ef migrations add Person_add_col_by_gender


接著來產生針對兩個 migration 檔案產生 SQL Script,指令參考如下

dotnet ef migrations script InitialCreate Person_add_col_by_gender

由上圖可看出,針對 Person 資料表異動新增了 Gender 欄位


其中,裡面有包含 insert into [__EFMigrationsHistory] 的動作,會寫入該筆異動紀錄,當然,不只僅能比對前次

版本的 migration 檔案,亦可比對任意版本的差異進而產生 Script



【參考】



沒有留言:

張貼留言