簡體   English   中英

Net 6 多個連接字符串

[英]Net 6 Multiple Connection Strings

如何在 Net 6 program.cs 中設置多個連接字符串? 我想在開發、暫存和生產環境中工作,它們都指向不同的數據庫服務器。

NET 6. 程序.cs:

builder.Services.AddDbContext<MyContext>(options =>
{
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"));

});

提前致謝。

這是你可以做的。

首先,像這樣創建一個 appsettings.json:

appsettings.json

{
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://*:5000"
      }
    }
  },
  "WillAppConfig": {
    "ActiveEnvironment": "Development",
    "DevDatabase": "server:123.123.123.123, user: will, pass:1234",
    "STGDatabase": "server:123.123.123.123, user: will, pass:1234",
    "ProdDatabase": "server:123.123.123.123, user: will, pass:1234"
  }
}

然后在項目中的某處創建一個 class,它將用於 map 配置到 object。

WillAppConfigurationMap.cs

public class WillAppConfigurationMap
{
    public string ActiveEnvironment { get; set; }
    public string DevDatabase { get; set; }
    public string STGDatabase { get; set; }
    public string ProdDatabase { get; set; }

}

最后在您的 Program.cs 中,您可以根據 ActiveEnvironment 的值使用 select 連接字符串。

var builder = WebApplication.CreateBuilder(args);
WillAppConfig = builder.Configuration.GetSection("WillAppConfig").Get<WillAppConfigurationMap>();
var connectionString = "";
if (WillAppConfig.ActiveEnvironment == "Development")
{
     connectionString = WillAppConfig.DevDatabase
} 
else if (WillAppConfig.ActiveEnvironment == "Staging") 
{
    connectionString = WillAppConfig.STGDatabase
} 
else if (WillAppConfig.ActiveEnvironment == "Production") 
{
   connectionString = WillAppConfig.ProdDatabase
}

builder.Services.AddDbContext<MyContext>(options =>
{ 
    options.UseSqlServer(connectionString));
});
partial class Program
{
    public static WillAppConfigurationMap WillAppConfig { get; private set;}
}

如果您不使用它,您可以從 appsettings.json 中刪除“Kestrel”部分。 您可以對 map 任何 appsettings.json 結構使用這種方法。

然后,您可以在應用程序中執行Program.WillAppConfig訪問您的配置 object。

在 appsetting.json 中創建多個不同名稱的連接字符串:

builder.Services.AddDbContext<MyContext>(options => {   
    options.UseSqlServer(builder.Configuration.GetConnectionString(UseNameofConnectionString));
});

您還可以創建擴展方法,在您調用它時為您提供所需的 connectionString。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM