发布ASP.NET Core应用程序时自动执行迁移

A-S*_*ani 7 webdeploy ef-migrations entity-framework-core webdeploy-3.5 asp.net-core

在使用Web Deploy将我的ASP 5应用程序发布到IIS时,有什么方法可以自动执行迁移代码(EF 7)?

我试过了

  • project.json,我在以下代码中添加了此代码scripts:

    "scripts" : { "prepublish": ["dnx ef database update", "other commands..."], "postpublish": ["dnx ef database update"] }

没有人为我工作.

附加信息

我按照此链接上的说明使用Web部署将我的ASP 5 RC-1 Web应用程序部署到IIS.

在发布设置中执行此操作后,我有:

ASP 5 RC 1使用Web Deploy发布到IIS

在ASP 4应用程序中使用Web部署我有其他数据库选项:

ASP 4使用Web Deploy发布到IIS

And*_*rei 5

使用context.Database.Migrate()

你可以从你的Startup班级打电话:

using (var context = new MyContext(...))
{
    context.Database.Migrate();
}
Run Code Online (Sandbox Code Playgroud)

它将在应用程序启动时将数据库迁移到最新版本.但要小心这样做,可能会注释掉这些代码并仅在您想要运行迁移时才推荐使用.

  • 为什么@TroyGrosfield可以访问生产服务器? (5认同)
  • 小心这样做.如果您在本地进行了新的迁移,并且您的某个开发人员将其本地数据库连接字符串切换为远程连接字符串(如测试/暂存或更糟糕的产品),那么这将尝试在它们准备好之前在远程数据库上运行新的迁移. (4认同)

A-S*_*ani 1

所以我将选项添加-environment到我的ef database命令中。现在它可以工作了:

"postpublish": ["dnx ef database update -e Staging"]
Run Code Online (Sandbox Code Playgroud)

我有四个不同的appsettings.json连接字符串,每个环境都有不同的连接字符串。只需指示命令运行的环境即可。