【问题标题】:Deploying database changes with EF 4.1使用 EF 4.1 部署数据库更改
【发布时间】:2011-05-02 20:15:25
【问题描述】:

关于在 EF 4.1 代码优先解决方案中部署数据库更改,是否有人有任何最佳实践?我知道 MS 目前不支持 EF 4.1 的数据库迁移,但显然人们有时需要这样做。

谢谢

【问题讨论】:

  • 对于 Code First,Migration Power Pack(我相信是在这个老问题之后引入的)运行良好 - 我仍然会采用适当的差异方法,但 Code First 迁移甚至可以使用 SQL 数据库(又名 Azure SQL),这就是我使用它的原因。

标签: asp.net entity-framework-4 code-first entity-framework-4.1


【解决方案1】:

将数据库部署到生产环境后,您必须进行增量更改。这意味着在您部署下一个版本之前,您必须在您的开发箱中准备两个数据库:

  • 当前部署在生产环境中的带有 DB 模式的数据库 - 您应该能够从源代码管理中获取此信息,因此请始终正确标记/标记您的生产版本
  • 具有新数据库架构的数据库

一旦你有两个数据库,你就可以使用一些工具来为你制作不同的 SQL 脚本。我对两者都有经验:

这些工具适用于 SQL 服务器。

一旦你有了不同的脚本,你就可以在你的开发箱上测试它。请注意,差异脚本无法创建一些更复杂的更改,并且需要您创建自定义迁移脚本,例如将数据存储在临时表中,同时重构真实表。此外,如果您在新版本中使用了一些新的种子数据,则必须手动将它们添加到脚本中或使用数据比较工具(这两种产品都提供)。

之后,您可以计划中断生产应用程序、数据库备份并运行升级脚本。

【讨论】:

  • 试试github.com/dradovic/MigSharp - 您需要手动创建步骤,但该工具是免费的,效果很好,而且(至少)您会了解您的数据库模型更改。
  • ApexSQL 也有一些非常好的工具来处理 SQL Server 和模式/数据差异 - 比 VS DB 工具好得多(我发现它只适合一次性生成,不适合持续开发进行广泛的重构)并且比 Red Gate 便宜一点;虽然我没有广泛使用 Red Gate,所以无法比较这两个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多