EF9 Database First 再試用紀錄

EF9, SQL Server, PostgreSQL, Database First,

§ 操作行為練習目標

database first → adjust schema → migration & update → adjust schema → migration & update → ...

§ 先總結整理 database first 使用指令

再重新整理 EF Tools 於 database first 程序使用指令。經拆解化整為零只有三道步驟,四個指令如下:

-- 指令順序(省略細部參數)
-- step 1:  DB 同步 scheam。
dotnet ef dbcontext scaffold <connection> <provider> 
  
-- step 2: 自動製作 migration 『schema 差異指令』。
dotnet ef migrations add <name>

-- step 2a: [option] 移除最近一次的 migration,可能不滿意想重作。
dotnet ef migrations remove 

-- step 3: 把最近一次的 migration 送到目標 DB 並執行『schema 差異指令』。
dotnet ef database update

之後再用此四個指令為基礎化零為整。

EF Core Tools 管理目錄

目標專案下。需要透過 appsettings.json 拿到連線字串。若不是啟動專案則用參數--startup-project指定。 另有Migrations/目錄紀錄『schema 差異指令』。這很重要應該與真實異動相符。 還有Schema/目錄由參數--output-dir指定。

§ 練習步驟

1. 安裝套件

主專案一定要安裝的套件

2. 安裝 EF Core Tools 工具程式

有兩個版本,二擇一。

3. Database first 第一道指令,

在方案目錄執行

4. 組織 Database Context 服務。

※設定好 DbContext 服務,後序 migration 才能成功。

5.Add-Migration (第一次 Add-Migration)

※若欲關聯的 DbContext 服務未組織會無法執行。

5a.Remove-Migrtion

移除最近一次 Migrtion。若前步驟生成的 migration 不滿意,移除再重作。

試完 Remove-Migrtion 再重新 Add-Migration。不然無法繼續練習。

6.第一次 Database Update (第一次更新 DB Schema)

※第一次 Database Update 應該會失敗,因為 table 是從已存在的 DB Schema 跑 scaffold 生成的。再重新建立一次當然會失敗。

6a.清空第一個 Migration Up/Down 再重新 Database Update

先手動暫時清空 InitialScaffoldDatabase Migration Up/Down method 再 update 一次。 database update 完成後還原剛清空的 Up/Down method。

7.Add-Migration AddDeveloper

變更 shcema 宣告,例:加入新欄位 Developer。

產生差異的 migration 並命名為 AddDeveloper

8.Update-Database

9.覆反精進

再來就是重覆調整 schema 產生 migration 再 update 到資料庫。整理後表述成

若想保證 scheam 的一致性就重新跑一輪 scaffold 流程。

§ 沒圖沒真象

圖片紀錄

執行紀錄(省略雜訊)

§ 參考文件

§ 完整程式碼

(EOF)

Last updated