我正在开发MVC 5,EF 5.0代码。我使用文件共享文件夹发布项目。
我可以使用数据库迁移来更新模型时更新开发的localDb。但是,在我将项目发布到远程服务器之后,它显示了使用完整SQL数据库服务器的生产Web服务器上要更改的模型和迁移所需的错误。
我知道我可以删除生产服务器上的数据库并让它重新创建数据库。但是,表中已有用户输入的数据。
有没有办法在不重新创建数据库的情况下应用模型/数据库更改?
答案 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工具。