紀錄專案建置過程
原本是打算採用.NET Core Web API + 原生HTML和JS
專案都建好了才想到,如果都用.NET Core了,何不直接用MVC...
雖然 EF Core 推薦以程式定義資料型別,再產生 SQL Script (Code-First) ,但在這次的專案我還是先弄了資料庫才反向倒回程式
所以這邊會紀錄的是 Database-First 的資料庫和專案建立流程
好,首先來處理一下資料庫。
因為我的專案和資料庫都想建置在 Heroku 上面,它有提供免費方案的資料庫是 PostgreSQL。
詳細方案及費用說明
首先,在 Heroku 建立本專案的 APP。
要建置資料庫需要透過 Heroku 的擴充元件:Heroku Postgres。
從 APP 頁面 > Resources > Add-ons 搜尋 Heroku Postgres > 選擇方案 > Provision
元件安裝完成後會看到這個畫面
點 Heroku Postgres 後就可以看到資料庫相關的資訊 Dashboard,包含連線數、資料數等等
Settings > Database Credentials > 選 View Credentials 可以展開,這裡會顯示你的 DB 連線資訊,等等會用到
有了連線資訊你可以自己挑一種 GUI 來操作資料庫,我是選擇 pgAdmin。
維修完之後,DB的連線資訊全部都更改了!
不確定這種維修的頻率有多頻繁,大家只能多注意連線字串的更新方式。
搞定資料庫之後,來開新專案吧!
Visual Studio 建立新方案 > 選擇 ASP.NET Core Web 應用程式範本 > 填寫專案名稱、位置 > 建立 > Web 應用程式 (模型 - 檢視 - 控制器) or API > 建立
拿到乾淨的 .NET Core 專案之後,先安裝幾個套件
- Microsoft.EntityFrameworkCore
- Microsoft.EntityFrameworkCore.Design
- Npgsql.EntityFrameworkCore.PostgreSQL
- Npgsql.EntityFrameworkCore.PostgreSQL.Design
你可以下指令 dotnet add package 或是用 Nuget 都無所謂 ~
接著要把資料庫的 Model 倒進專案中
打開命令提示字元,在專案路徑(.csproj 檔的位置)下輸入指令
$ dotnet ef dbcontext scaffold "Host=my_host;Database=my_db;Username=my_user;Password=my_pw;Sslmode=Require;Trust Server Certificate=true" Npgsql.EntityFrameworkCore.PostgreSQL -o Models
如果你是用其他資料庫的,把Npgsql.EntityFrameworkCore.PostgreSQL
這個參數換成對應的套件,例如 MSSQL 就把改為放 Microsoft.EntityFrameworkCore.SqlServer
紀錄一些常用的參數
-o Models
會將實體類別那些 .cs 檔產這個路徑下
--context-dir Context
DbContext 會放置的路徑
-c TestDbContext
DbContext 的命名
-f
複寫現有檔案 (更新)
$ dotnet tool install --global dotnet-ef
資料參考:
EF Core 工具參考(.NET CLI)-EF Core | Microsoft Docs
第 15 天:LINE BOT SDK:Heroku Postgres 資料庫