【问题标题】:CodeFirst migrations with different connection strings defined in appsettings.json使用 appsettings.json 中定义的不同连接字符串的 CodeFirst 迁移
【发布时间】:2019-08-18 09:35:58
【问题描述】:

在我的 asp.Net core (2.2) 项目中,我有

appsettings.production.json

appsettings.staging.json

appsettings.development.json

每个服务器都有自己的连接字符串,用于不同的服务器。我对模型进行了更改并运行 Add-Migration 然后运行 ​​update-database - 但这只会更新开发服务器上的架构。

如何使用环境appsettings.json 文件中定义的连接来定位/更新登台和生产服务器?

我尝试使用不同的环境构建它,并且在不同的环境中运行时,我知道连接字符串被正确使用 - 但是如何让 EF 以特定数据库为目标!?

【问题讨论】:

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


    【解决方案1】:

    您可以使用此命令设置特定环境,例如此博客mention

    setx ASPNETCORE_ENVIRONMENT "Development"
    

    然后你只需要运行 dotnet ef migration cli 命令

    更新确保您已经在 startup.cs 中设置了这样的环境配置

    builder
        .SetBasePath(hostingEnvironment.ContentRootPath)
        .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
        .AddJsonFile($"appsettings.{hostingEnvironment.EnvironmentName}.json", optional: true)
        .AddEnvironmentVariables();
    

    你可以查看我的完整配置here

    【讨论】:

    • 我一直在尝试这个,实际上我已经在查看那个页面了 - 我正在尝试运行 Update-Database 等,但它似乎不起作用。我正在生成脚本并在服务器上运行它们,以便完整地保存之前的所有迁移历史记录。
    • 你的意思是不能设置环境变量?
    • 环境变量设置得很好,但是当尝试运行其他命令时,它似乎仍然指的是 DEV 连接设置:/
    • 尝试添加这个并且仍然得到No migrations were applied. The database is already up to date. - 它总是针对开发服务器。我放弃了 codefirst 迁移,我对它没有很好的体验。我已经看到太多来自同事的基本数据库设计错误,也来自糟糕的模型设计。
    • 好吧,我很困惑,除了migrations 表之外,它似乎已经放入了表中......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2019-08-05
    • 2019-05-25
    • 2013-03-08
    • 2020-12-04
    • 1970-01-01
    相关资源
    最近更新 更多