如何在Net 6的program.cs中设置多个连接字符串?我想要使用开发、暂存和生产环境,它们都指向不同的数据库服务器。
NET 6. Program.cs:
builder.Services.AddDbContext<MyContext>(options =>
{
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"));
});
提前致谢。
如何在Net 6的program.cs中设置多个连接字符串?我想要使用开发、暂存和生产环境,它们都指向不同的数据库服务器。
NET 6. Program.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"
}
}
然后在您的项目中创建一个类,用于将配置映射到对象。
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; }
}
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;}
}
Program.WillAppConfig
在应用程序的任何地方访问配置对象。builder.Services.AddDbContext<MyContext>(options => {
options.UseSqlServer(builder.Configuration.GetConnectionString(UseNameofConnectionString));
});
您可以拥有多个具有相同DefaultConnection名称但在它们之间具有不同值的appsettings.json,例如appsettings.Development.json
或appsettings.Staging.json
或appsettings.DevLocal.json
或appsettings.Production.json
等等。
然后,您可以在launchSettings.json中添加多个配置文件来配置它们,例如:
"profiles": {
"Core": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "https://localhost:7165;http://localhost:5206",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Local": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "https://localhost:7165;http://localhost:5206",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "DevLocal"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
变量ASPNETCORE_ENVIRONMENT的值将从其相应的appsettings.ASPNETCORE_ENVIRONMENT.json
配置中获取。默认情况下执行的配置文件将是您的项目名称。要执行新配置文件,您只需要将其重定向即可。以下是在cli中执行此操作的方法:
dotnet run --launch-profile "Local"
DefaultConnection
就行了。 - Felix