EF 5 - 模型第一次数据库迁移:发布到远程生产服务器后更改模型?

时间:2013-02-24 22:14:47

标签: asp.net asp.net-mvc entity-framework asp.net-mvc-4 entity-framework-5

我正在开发MVC 5,EF 5.0代码。我使用文件共享文件夹发布项目。

我可以使用数据库迁移来更新模型时更新开发的localDb。但是,在我将项目发布到远程服务器之后,它显示了使用完整SQL数据库服务器的生产Web服务器上要更改的模型和迁移所需的错误。

我知道我可以删除生产服务器上的数据库并让它重新创建数据库。但是,表中已有用户输入的数据。

有没有办法在不重新创建数据库的情况下应用模型/数据库更改?

2 个答案:

答案 0 :(得分:5)

是的,有办法。实际上有几个。

  • 您可以生成可应用于生产数据库的SQL脚本。使用-Script标志在程序包管理器控制台中运行Update-Database,如下所示:

    更新 - 数据库-Script -SourceMigration:InitialMigration -TargetMigration:LatestMigration

    或者使用Red Gate SQL Compare等工具生成脚本。

  • 在应用程序启动时,您可以通过注册MigrateDatabaseToLatestVersion数据库初始化程序自动升级数据库:

    Database.SetInitializer(new MigrateDatabaseToLatestVersion());

您可以在文章MSDN - Code First Migrations中阅读有关这两种方法的更多信息。

答案 1 :(得分:0)

我从来没有选择删除生产中的数据库。 EF代码首先不是为了这个目的,而是仅用于开发,

有几个选项,如果使用Visual Studio Ultimate,SQL菜单下会有一个架构比较工具。或者,您可以使用Red Gate SQL Compare工具。