- Published on
ASP.NET Core MVC - 使用 Heroku 的 PostgreSQL
前面文章 ASP.NET Core MVC + Heroku 已經把 .NET Core MVC 的專案放到 Heroku 了,現在要使用它所提供的免費 PostgreSQL,雖然免費的限制資料數量為 10,000 筆,不過如果是小型專案的話基本上已經夠用了,可以看一下 Heroku 的介紹
Heroku CLI 建立
- 先進到之前的專案資料夾,就可以使用 Heroku 的 cli 來建立 Database
heroku addons:create heroku-postgresql:hobby-dev

- 建立完成之後可以看一下相關的資訊
heroku pg:info

- 可以直接透過 cli 拿到相關的連線資料
heroku pg:credentials:url DATABASE

Heroku 畫面建立
- 來到
ResourcesTab,在下方Add-ons的地方搜尋Postgres,點Heroku Postgres安裝

- 選擇
Hobby Dev - Free然後按Provision

- 看到畫面下方出現
Heroku Postgres :: Database就代表建立好了,可以點進去

- 會另開新分頁顯示 Database 的相關資訊

- 可以點
SettingsTab,點開View Credentials,可以在下面看到相關的連線資訊

使用 DataGrip 連接
- 按照前面畫面上的資料,依序填入

- 點選
AdvancedTab,找到sslmode,把 Value 改成require

- 回到
GeneralTab,點Test Connection應該會出現Successful

使用 ASP.NET Core MVC 連接
在這裡會使用到之前上傳到 Heroku 的專案,然後相關的使用方式也可以參考之前的文章 ASP.NET Core MVC - EF Core 使用 PostgreSQL,這邊只講不一樣的地方
在
UseNpgsql裡面需要多一個參數OptionBuilder,裡面需要呼叫RemoteCertificateValidationCallback然後直接回傳true
services.AddDbContext<AppDbContext>(options =>
{
options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection"), optionBuilder =>
{
optionBuilder.RemoteCertificateValidationCallback((sender, certificate, chain, errors) => true);
});
});
- 在 Connection 的地方,最後需要多一個參數
SslMode=Require;,需要注意的是大小寫必需要一樣,不然會有問題
{
"ConnectionStrings": {
"DefaultConnection": "Server=aws.com;Port=5432;Database=db;UID=user;PWD=password;SslMode=Require;"
}
}
