我正在寻找一种在生产和测试环境之间动态切换的方法。
我有两个不同的连接字符串到MSSQL数据库。我想动态地将它传递给我的dbContext:
services.AddDbContext<ViggrContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("TestDatabase")));
我有两种类型的发布配置文件,一种用于测试,另一种用于生产环境。 在此配置文件中,我选择与数据库的连接。当然,测试配置文件指向TestDatabase连接字符串,生产配置文件指向生产数据库。
但是如何在代码的这一部分动态加载Startup.cs类?
services.AddDbContext<ViggrContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("TestDatabase")));
你有什么建议吗?
答案 0 :(得分:3)
您可以在不同的appsettings文件中配置不同的环境连接字符串,如下所示 -
对于测试环境,请使用appsettings。测试 .json
"Data": {
"ViggrContext": {
"ConnectionString": "" /*<<== TestDatabase connection string */
},
对于prod环境,请使用appsettings。 prod .json
"Data": {
"ViggrContext": {
"ConnectionString": "" /*<<== ProdDatabase connection string */
},
使用 ASPNETCORE_ENVIRONMENT 环境变量将当前环境设置为测试或产品值。
在初创公司中,您可以像这样使用 -
services.AddDbContext<ViggrContext>(options =>
options.UseSqlServer(Configuration["Data:ViggrContext:ConnectionString"]));
看看这是否有帮助。