iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 21
1
自我挑戰組

後端或是ASP.NET Core的學習筆記系列 第 21

第21天:將EF Core的資料庫連線字串改由appsettings.json提供

第21天,已經過了三個禮拜,身心俱疲...就算是待業中一次開四個主題實在是太累了

今天講一下怎麼更改資料庫連線位置的設定,之前我們是用dotnet ef cli工具進行反向工程幫我們產生資料庫模型,在打參數時輸入的連線字串預設會寫死在[資料庫名稱]Context裡面,我這裡的資料庫名稱是AspCoreIThelp2020,所以會產生AspCoreIThelp2020Context.cs檔,並且把連線字串寫死在裡面。

這個檔案預設會使用DI建構式注入從StartUp.cs載入設定options,若options沒有指定資料庫連線字串的話,AspCoreIThelp2020Context中的第20行OnConfiguring()方法會使用當初我們打指令寫死的連線字串。(你還看到這裡有warning提示訊息)

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. See http://go.microsoft.com/fwlink/?LinkId=723263 for guidance on storing connection strings.
                optionsBuilder.UseSqlServer("Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=AspCoreIThelp2020;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");
            }
        }

所以前往Startup.cs檔,幫我們AspCoreIThelp2020Context指定資料庫連線字串。在ConfigureServices()方法中我們有使用services.AddDbContext<AspCoreIThelp2020Context>()的方式向DI註冊我們要使用AspCoreIThelp2020Context,其括號()裡面就可以寫一些設定值幫我們傳給AspCoreIThelp2020Context

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();
    services.AddDbContext<AspCoreIThelp2020Context>();
}

寫法如下,Configuration.GetConnectionString()會找appsettings.json裡面叫做ConnectionString的內容,我在裡面取了一個DBConStr名稱代表連線字串的變數

services.AddDbContext<AspCoreIThelp2020Context>( options =>       options.UseSqlServer(Configuration.GetConnectionString("DBConStr"))
});
{
  "ConnectionStrings": {
    "DBConStr": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=AspCoreIThelp2020;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
  },
  ...其他設定值...
}

完成以上步驟後,我們的EFcore就會使用appsettings裡面的資料庫連線字串來連接資料庫

資料來源


上一篇
第20天:使用ASP.NET Core DI取得appsettings.json 組態設定檔字串
下一篇
第22天:建立可重複使用的檢視-Partial View部分檢視
系列文
後端或是ASP.NET Core的學習筆記30

尚未有邦友留言

立即登入留言