【问题标题】:How does one update live mssql database with code-first migrations in mvc如何在 mvc 中使用代码优先迁移更新实时 mssql 数据库
【发布时间】:2014-04-28 13:20:46
【问题描述】:

我已经复制了数据库并启动了网站。现在我添加了一个特性(例如,模型中的一个新属性导致在某个表中创建一个列),我将文件复制到服务器并且网站得到更新。但是,我应该如何处理 sql server 的更新。我知道我可以通过在Update-Database 命令中使用-Script 来生成脚本,但是,如果我忘记这样做了怎么办。我能否以某种方式查看旧迁移的脚本,以便在我的服务器上运行它们?

【问题讨论】:

  • 我认为你需要考虑源代码控制。我们倾向于将每次数据库更改、每次更新的 .sql 脚本转储到相关站点的 SVN 存储库中。
  • @DavidHirst 是手动完成,还是我可以设置为每次执行Update-Database
  • 我不确定我是否关注?您说“我可以以某种方式查看旧迁移的脚本,以便可以在我的服务器上运行它们吗?”。答案是肯定的,如果您对为 Update-Database 编写的那些脚本使用源代码控制,则可以。您可以在您的存储库中查看任何较旧的更新,甚至在您需要时回滚您的站点代码和数据库脚本。一些源代码控制软件也会执行发布方面,但我倾向于在我的环境中手动执行。
  • @DavidHirst 我至少目前没有保存任何这些脚本。我做了“更新数据库”,脚本在数据库中生成并执行,就是这样,我不再有任何线索。这是否意味着我必须开始将它们保存在我的应用程序的某个位置?或者也许我错了,他们实际上被保存在某个地方,但我找不到他们?附言这些脚本是由EF 或任何负责生成的。生成它们的唯一事情是,正如我在问题中给出的示例,我在模型中添加了一个新属性。
  • 我明白了,看看这个帖子我相信这就是你要找的stackoverflow.com/questions/4153047/…

标签: sql-server asp.net-mvc entity-framework asp.net-mvc-5 entity-framework-migrations


【解决方案1】:

如果您使用Entity Framework Migrations,您可以简单地使用数据库初始化程序MigrateDatabaseToLatestVersion。在您的开发机器上,您执行迁移、测试等所有工作,当您对结果感到满意时,将工作迁移和更新的代码库一起发送到服务器,然后重新启动服务器。其余部分由上下文完成。

如果您正在部署应用程序,您可能希望它在应用程序启动时自动升级数据库(通过应用任何挂起的迁移)。您可以通过注册 MigrateDatabaseToLatestVersion 数据库初始化程序来完成此操作。数据库初始化程序只包含一些用于确保正确设置数据库的逻辑。此逻辑在应用程序进程 (AppDomain) 中第一次使用上下文时运行。

【讨论】:

  • 看起来很有希望!将尽快尝试那个。谢谢!
  • 允许 Entity Framework 对您的生产数据库执行任何操作是一个非常的坏主意。 EF 迁移仅用于开发目的。有关如何正确处理此问题的更多信息,请参阅cpratt.co/…
猜你喜欢
  • 2018-02-24
  • 1970-01-01
  • 2016-06-19
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多