ASP.NET MVC 4,迁移 - 如何在生产服务器上运行"update-database"

nii*_*ico 28 asp.net-mvc entity-framework asp.net-mvc-4 ef-migrations entity-framework-5

我可以使用包管理器在本地运行'update-database -verbose'.

可能是一个愚蠢的问题,但我无法在线找到它 - 一旦部署了我的网站 - 我怎样才能在服务器上手动运行?

其次 - 您建议将数据库迁移部署到生产中的其他策略是什么?它们将如何更好?

谢谢

amh*_*hed 28

你有几个选择:

  • 您可以使用update-database -script生成SQL命令来更新服务器上的数据库
  • 您可以使用驻留在包文件夹中的migrate.exe可执行文件/packages/EntityFramework5.0.0/tools/migrate.exe.我过去曾使用Jet Brains的Team City Build Server成功地使用它来设置我的部署脚本的迁移.
  • 如果您使用的是IIS Web Deploy,则可以告诉服务器在发布后执行迁移(参见下面的图片)
  • 您可以设置自动迁移,但我更愿意控制发生的事情:)

更新:另外,看看Sayed Ibrahim的博客,他在微软的MsBuild团队工作,并对部署有一些很好的见解

在此输入图像描述


小智 9

我知道这个问题已经得到解答,但供将来参考:

其中一个选项是将这样的东西放在DB上下文类的构造函数中:

public MyDbContext()
    {
        System.Data.Entity.Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDbContext, Configuration>());            
    }
Run Code Online (Sandbox Code Playgroud)

  • 虽然这种方法可以完成工作,但是每次`MyDbContext`实例化时都不需要执行这行代码.因此,如果要使用这种方法,则值得考虑将此代码放入`MyDbContext`类的静态构造函数中.或者在`Global.asax.cs`文件中的`Application_Start`方法中.或者其他与应用程序的组合根密切相关的地方. (4认同)