[英]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.