【问题标题】:mvc publish error with automigrations带有自动迁移的 mvc 发布错误
【发布时间】:2014-11-04 13:58:37
【问题描述】:

我在发布我的 MVC 项目时遇到问题。

我收到错误“支持 'ApplicationDbContext' 上下文的模型自创建数据库以来已更改。请考虑使用 Code First 迁移来更新数据库 (http://go.microsoft.com/fwlink/?LinkId=238269)。”,这是在自动迁移的帮助下解决的。

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

我在 Windows 7 上使用 IIS7。

【问题讨论】:

  • 如果您更改模型,则必须使用迁移更新数据库
  • 如何更新位于我所指的 ftp 计算机上的数据库?

标签: c# asp.net-mvc


【解决方案1】:

要更新另一个 Db 服务器上的数据库,您可以这样做:

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

这是一种非常糟糕的方法,我不建议以这种方式更新数据库。

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

要设置它,请在应用程序启动方法中使用此命令:

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

【讨论】:

    【解决方案2】:

    您必须在更改模型后更新您的数据库。另一台机器和你的电脑使用同一个数据库?如果不是,您必须更新此数据库。

    【讨论】:

    • 如何更新位于我所指的 ftp 计算机上的数据库?这会自动发生吗?
    • 迁移,尤其是自动迁移仅用于开发。在生产中,您负责在生产数据库上执行任何必要的架构更改。这是设计使然,因为让任何东西自动更改您的生产模式是非常不明智的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 2018-07-06
    • 2019-02-26
    • 2016-12-27
    • 2014-11-05
    相关资源
    最近更新 更多