之前文章有討論到 EF Core DBFirst 如何使用,若未來資料表有相關異動,又該如何更新 Entities
與DbContext,以及能否做到指定的資料表更新即可
首先我們在資料庫建立資料表 Persons
開發工具安裝相關套件
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools
Microsoft.Extensions.Configuration.Json
再來透過 dotnet 命令字元建立 model 以及 dbcontext,並且指定輸出目錄
dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=dbname;User Id=user; password=***" Microsoft.EntityFrameworkCore.SqlServer --output-dir Entities --context-dir Context
建置完成後,檢視方案總管,可以看到多了兩個資料夾以及相關檔案
值得一提的是,當執行指令完成時,會出現黃色的提醒字串,大意是說, 資料庫連線字串應該透過
設定檔來處理,相當貼心,之前文章也有介紹如何將連線字串透過設定檔讀取
產生的DbContext.cs 檔案會自動產生連線字串
我們知道黃色字串的用意,之後若不想再看到這樣的訊息呢?可以使用 –no-onconfiguring 指令
產生的DbContext.cs 檔案就「沒有連線字串」
資料表Schema 有相關異動或新增Table,需要同步 Model 的部分其實只要同樣指令後面加入 –force 即可
該指令會重新產生 Context和Model覆蓋掉原本的
dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=dbname;User Id=user; password=***" Microsoft.EntityFrameworkCore.SqlServer --output-dir Entities --context-dir Context –force
例如我們新增欄位 「CellPhone」
執行指令後,Person.cs 與 DbContext 皆有修改
Person.cs
DbContext.cs
若是使用 nuget 套件管理,指令可以參考
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=TestDb;User Id=**;password=t***" Microsoft.EntityFrameworkCore.SqlServer -outputdir Entities -contextDir Context -force
以上打完收工
沒有留言:
張貼留言