環境與版本
作業系統:Window10 64x 版本:2004
開發軟件(IDE):Visual Studio 2019 Community
.NET版本:ASP.NET Core 3.1
專案架構:MVC
資料庫產品版本:SQL Server 2014 Express Edition (64-bit)
資料庫版本編號:12.0.2000.8
Database First就是先在資料庫把資料庫結構設計完成,再到ASP.NET Core裏,建立資料庫連線,然後使用Entity Framework來完成Model的建立。
MSSQL環境
Visual Studio – ASP.NET Core環境
建一個資料庫連線,如下圖在[伺服器總管]的[資料連接]選[加入連接…]
在[選擇資料來源]視窗選擇Microsoft SQL Server
按下[繼續]就出現[加入連接]的視窗,在這裏輸入要連結的資料庫伺服名稱和選擇資料庫名稱。
備註: . ←是SQL SERVER的預設執行個體伺服器名子。
本機測試與開發基本上驗證都是直接選擇Windwos驗證,這也是所謂整合式驗證的一部份,如果整個團隊開發的話,就可能會用不同的驗證方式。
SQL Server驗證,在一些以資料面龐大的團隊或公司,SQL SERVER資料庫可能在公司的機房上面,而公司很多員工都有各自的權限,會利用在SQL SEVER的帳號密碼做資料庫存取相關權限的驗證。
Active Directory密碼驗證,是微軟Windows Server中,負責架構中大型網路環境的集中式目錄管理服務(Directory Services)
Active Directory整合式驗證,同上雷同。
一般開發或是學習SQL Server和Visual Studio都在同一台電腦上,也就直接用Windows驗證就行了。
點選[進階],跳出[進階屬性],下面的連線字串,這就是ConnectionString,在ASP.NET裏是資料庫處理的重要參數值。
Visual Studio 2019頁面,打開你的專案。再到[工具]功能表下,選擇[NuGet套件管理員]下的[套件管理器主控台]功能。
在Visual Studio下方跳出[套件管理器主控台]視窗。
在[套件管理器主控台]中輸入以下命令:
Scaffold-DbContext "資料庫連線字串" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
資料庫字串獲取方式
資料庫連線字串可打開[伺服器總管],在[資料連接]中找出剛才建好的連接點上按滑鼠右鍵叫出快選單,如下圖:
Data Source=.;Initial Catalog=BUTLER;Integrated Security=True
複製替換掉命令中雙引號裏的”資料庫連線字串”,即成為如下完整指今令;
Scaffold-DbContext "Data Source=.;Initial Catalog=BUTLER;Integrated Security=True" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
※常用參數,也可以參考 這裡
-Force :如果此位置已有相同檔案時覆蓋,就算沒檔案也可以多這個參數。
-OutputDir Models:將檔案輸出到Models資料夾
-NoOnConfiguring:DbContext不要產生OnConfiguring片段。
-UseDatabaseNames:使用跟資料庫一樣的大小寫命名,不然可能大小寫會被改成別的風格
-NoPluralize:不要加複數s,不然會幫你在命名結尾上加上s
將完整指令貼到[套件管理主控台],按下[Enter]執行這個指令。
可以看到方案總管裏,Model資料夾下多出幾個類別檔案,正好對應我們在SQL SERVER裏建的兩個新的資料表。另外還有一個BUTLERContext.cs的資料庫類別檔案。
如何重複使用?
如果你已經開發到一定的程度了,而且很多程式都已經引用連結該Model資料,而我們在這個時候對於資料表的資料結構有做修改的動作,想要程式同步的Mofel資料同步,然後自己也不想一個一個刻,這樣的狀況下,可以利用下方的方式!
如果已經很多程式都引用連結該Model程式,使用Scaffold-DbContext 的命令去創建時會有很多建立失敗的狀況。
把相關引用到的程式都從專案移除(只是暫時移除)
刪除原本使用Scaffold-DbContext 的命令去創建的Model程式
預備狀態
將完整指令貼到[套件管理主控台],按下[Enter]執行這個指令。
Scaffold-DbContext "Data Source=.;Initial Catalog=BUTLER;Integrated Security=True" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
成功建立
參考資料:
(Day 9) 如何進行Database First式開發?:https://ithelp.ithome.com.tw/articles/10201333