gpt4 book ai didi

c# - Net 6 多个连接字符串

转载 作者:行者123 更新时间:2023-12-05 03:32:07 25 4
gpt4 key购买 nike

如何在 Net 6 program.cs 中设置多个连接字符串?我想使用开发、暂存和生产环境,它们都指向不同的数据库服务器。

NET 6.Program.cs:

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

});

提前致谢。

最佳答案

这是您可以执行的操作。

首先,像这样创建一个 appsettings.json:

应用设置.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"
}
}

然后在项目的某处创建一个类,用于将配置映射到对象。

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 的值选择要使用的连接字符串。

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;}
}

如果您不使用“Kestrel”部分,您可以从 appsettings.json 中删除它。您可以使用这种方法来映射任何 appsettings.json 结构。

然后,您可以通过 Program.WillAppConfig 从应用中的任何位置访问您的配置对象。

关于c# - Net 6 多个连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70523442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com