ASP.NET核心EF代码首先appsettings.json

时间:2016-12-08 15:02:10

标签: c# asp.net entity-framework asp.net-core entity-framework-core

我正在寻找一种在生产和测试环境之间动态切换的方法。

我有两个不同的连接字符串到MSSQL数据库。我想动态地将它传递给我的dbContext:

   services.AddDbContext<ViggrContext>(options =>
                    options.UseSqlServer(Configuration.GetConnectionString("TestDatabase")));

我有两种类型的发布配置文件,一种用于测试,另一种用于生产环境。 在此配置文件中,我选择与数据库的连接。当然,测试配置文件指向TestDatabase连接字符串,生产配置文件指向生产数据库。 enter image description here

但是如何在代码的这一部分动态加载Startup.cs类?

   services.AddDbContext<ViggrContext>(options =>
                    options.UseSqlServer(Configuration.GetConnectionString("TestDatabase")));

你有什么建议吗?

1 个答案:

答案 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"]));

看看这是否有帮助。