ASP.Net Core CodeFirst 自動建立Entity

  • 1283
  • 0

在 ASP.Net FrameWork 中,我們可以透過 CodeFirst 的方式,自動幫我們建立資料庫中每一個Table,並轉換成Entity,讓我們有Model可以做對應。

但是在.Net Core中,可就沒有辦法那麼方便點一點就可以完成了。我們得需要額外安裝其他套件,並透過下指令的方式才能自動幫我們產生。

在過去 .Net FrameWork中,我們可以透過 加入>新增項目>資料 中,找到 ADO.NET 實體資料模型

透過裡面的CodeFirst可以幫助我們快速將Table內的欄位轉換成Entity的Model作為使用,非常方便。

但在.Net Core中,並沒有提供介面可以讓我們進行點選。

因此我們必須要透過安裝套件,並輸入指令才能將資料庫中的Table產生對應的Enriry作為Model讓我們使用。

而在輸入指令之前,我們需要先至Nuget中,安裝以下兩個套件。

分別是:

「Microsoft.EntityFrameworkCore.SqlServer」、「Microsoft.EntityFrameworkCore.Tools」

注意:安裝套件時,請記得兩者套件版本要一致,否則可能會發生問題。

接著打開 工具>Nuget套件管理員>套件管理器主控台

在主控台Consoel中就可以下指令:

Scaffold-DbContext "資料庫連線字串" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Force -TableName -Tables 資料表

Scaffold-DbContext 為剛剛安裝Tools套件的指令,雙引號後面就是放入該資料庫連線字串

-OutputDir 指定要輸出到專案的哪個資料夾,本文為Models資料夾

-Force 強制複寫,若Table欄位異動,會自動修改該Entity內的欄位

-Tables ,決定要將那些資料表轉成Entity。若有多張表要匯入,則需要以逗號區隔。

註:沒給-Tables參數的話,預設抓DB全部的Table

匯入成功後,會自動產生 CeptContxt物件。裡面會有Entity的欄位

而在entity資料夾中,則會存放剛剛從Table轉出來Entity。

以上文章敘述如有錯誤及觀念不正確,請不吝嗇指教:)

有任何家教、案子 或技術相關問題 請都歡迎聯繫我

http://www.zhenghui.idv.tw/