2014-11-04 37 views
0

我有问题发布我的MVC项目。MVC发布错误与自动化

我得到了错误“自从创建数据库以来,支持'ApplicationDbContext'上下文的模型已经发生了变化,考虑使用Code First Migrations来更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。”,这是通过automigrations解决的。

我在另一台机器上通过ftp发布了我的项目,然后在模型结构上添加了一些更改,在我的计算机上运行,​​它启动成功并在同一台机器上再次发布。当我尝试在那里运行它时,发生了一个错误 - “自从创建数据库以来,支持'ApplicationDbContext'上下文的模型已经发生了变化。考虑使用Code First Migrations来更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。”

我在Windows 7上使用IIS7。

+0

如果你改变你的模型必须迁移 – InferOn 2014-11-04 14:00:24

+0

如何更新所在的计算机上的数据库更新数据库到我指到ftp? – Devegnik 2014-11-04 14:03:33

回答

2

为了另一个数据库服务器上更新数据库,你可以把这种方式:

  1. 配置连接字符串以使用新的服务器
  2. 运行Update-database命令从包管理器控制台,在某些情况下,你将需要使用-force旗。但要小心,这可能会删除一些数据。此命令也有 - ConnectionStringName参数,这可以帮助你进行更新。

这是一个非常糟糕的做法,我不建议这样更新数据库。

我会建议你为你的上下文设置Initialzier。我通常使用MigrateDatabaseToLatestVersion,在更改模型后,您需要使用Add-migration命令添加新的迁移。

要建立它在应用程序启动方法,使用这个命令:

Database.SetInitializer<ApplicationDbContext>(new MigrateDatabaseToLatestVersion<ApplicationDbContext>()); 
0

更改模型后必须更新数据库。另一台机器和您的电脑使用相同的数据库?如果没有,你必须更新这个数据库。

+0

如何更新位于我所指的ftp计算机上的数据库?这可以自动发生吗? – Devegnik 2014-11-04 14:05:27

+1

迁移,特别是自动迁移*仅用于开发*。在生产中,您有责任对生产数据库执行任何模式更改。这是设计的,因为它会*非常不明智地让自动改变你的生产模式有任何东西。 – 2014-11-04 14:08:25