ASP.NET核心EF代碼首先appsettings.json

asp.net asp.net-core c# entity-framework entity-framework-core

我正在尋找一種在生產和測試環境之間動態切換的方法。

我有兩個不同的連接字符串到MSSQL數據庫。我想動態地將它傳遞給我的dbContext:

   services.AddDbContext<ViggrContext>(options =>
                    options.UseSqlServer(Configuration.GetConnectionString("TestDatabase")));

我有兩種類型的發布配置文件,一種用於測試,另一種用於生產環境。在此配置文件中,我選擇與數據庫的連接。當然,測試配置文件指向TestDatabase連接字符串,生產配置文件指向生產數據庫。 在此處輸入圖像描述

但是,如何在代碼的這一部分動態加載Startup.cs類?

   services.AddDbContext<ViggrContext>(options =>
                    options.UseSqlServer(Configuration.GetConnectionString("TestDatabase")));

你有什麼建議嗎 ?

熱門答案

您可以在不同的appsettings文件中配置不同的環境連接字符串,如下所示

對於測試環境,請使用appsettings。 測試 .json

 "Data": {
    "ViggrContext": {
      "ConnectionString": "" /*<<== TestDatabase connection string */
    },

對於prod環境,請使用appsettings。 prod .json

 "Data": {
    "ViggrContext": {
      "ConnectionString": "" /*<<== ProdDatabase connection string */
    },

使用ASPNETCORE_ENVIRONMENT環境變量將當前環境設置為TestProd值。

在Startup中,您可以像這樣使用 -

     services.AddDbContext<ViggrContext>(options =>
options.UseSqlServer(Configuration["Data:ViggrContext:ConnectionString"]));

看看這是否有幫助。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow