Asp.net 使用EF 4.1部署数据库更改

Asp.net 使用EF 4.1部署数据库更改,asp.net,entity-framework-4,code-first,entity-framework-4.1,Asp.net,Entity Framework 4,Code First,Entity Framework 4.1,是否有人在EF 4.1代码优先解决方案中部署数据库更改方面有任何最佳实践?我知道MS目前不支持EF 4.1的数据库迁移,但显然人们需要不时地这样做 谢谢一旦将数据库部署到生产环境中,就必须进行增量更改。这意味着在部署下一个版本之前,您必须在dev box中准备两个数据库: 当前已在生产中部署数据库模式的数据库-您应该能够从源代码管理中获取此数据库,以便始终正确标记生产版本 具有新数据库模式的数据库 一旦有了两个数据库,您就可以使用一些工具来为您改变SQL脚本。我在这两方面都有经验:

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


谢谢

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

  • 当前已在生产中部署数据库模式的数据库-您应该能够从源代码管理中获取此数据库,以便始终正确标记生产版本
  • 具有新数据库模式的数据库
一旦有了两个数据库,您就可以使用一些工具来为您改变SQL脚本。我在这两方面都有经验:

这些工具适用于SQL server

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


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

尝试-您需要手动创建步骤,但该工具是免费的,非常有效(至少)你会理解数据库模型的变化。ApexSQL还有一些处理SQL Server和模式/数据差异的非常好的工具-比VS DB工具(我发现它只适合一次性生成,不适合进行大规模重构的持续开发)好得多,比Red Gate便宜一点;虽然我没有广泛使用RedGate,所以无法比较这两种方法。对于代码优先,迁移电源包(我相信是在这个老问题之后引入的)工作得很好-我仍然会采取适当的差异方法,但代码优先迁移甚至可以与SQL数据库(又名Azure SQL)一起工作,这就是我使用它的原因。