【问题标题】:ASP.NET Core EF Code First appsettings.jsonASP.NET Core EF 代码优先 appsettings.json
【发布时间】:2016-12-08 15:02:09
【问题描述】:

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

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

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

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

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

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

你有什么建议吗?

【问题讨论】:

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


    【解决方案1】:

    你可以像这样在不同的appsettings文件中配置不同的环境连接字符串-

    对于测试环境,使用 appsettings.test.json

     "Data": {
        "ViggrContext": {
          "ConnectionString": "" /*<<== TestDatabase connection string */
        },
    

    对于 prod 环境,使用 appsettings。prod.json

     "Data": {
        "ViggrContext": {
          "ConnectionString": "" /*<<== ProdDatabase connection string */
        },
    

    使用 ASPNETCORE_ENVIRONMENT 环境变量将当前环境设置为 TestProd 值。

    在Startup中,你可以这样使用-

         services.AddDbContext<ViggrContext>(options =>
    options.UseSqlServer(Configuration["Data:ViggrContext:ConnectionString"]));
    

    看看这是否有帮助。

    【讨论】:

      猜你喜欢
      • 2021-01-08
      • 2019-10-23
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2018-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多