从实体框架代码首先从开发迁移到生产

时间:2012-01-06 09:18:27

标签: entity-framework ef-code-first

过去几周我一直致力于一个辅助项目,并首先使用EntityFramework Code构建系统。这在开发过程中非常方便,因为我需要对代码进行的任何更改都很容易反映在DB中。但是现在我想要启动该网站,但是继续开发,我不想每次对模型进行调整时都要删除并重新创建数据库......

有没有办法让EF为模型更改生成更改脚本,以便我可以将它们自己部署到生产服务器?我如何在其他地方使用数据库(网站后台的Windows服务),而不必删除并重新创建表,并使用与我相同的模型?有点像“代码第一,但现在我有一个生产数据库,不要破坏它......”

2 个答案:

答案 0 :(得分:4)

我个人使用VS2010中的内置数据工具进行数据库模式同步以更新生产。

如果你没有VS Premium,另一个更便宜的工具是过去使用过的SQLDelta,非常好。

这两个工具都连接到两个数据库版本,并允许您首先同步表模式。两者都具有导出到SQL脚本的功能。

筹备EF是迁移,它允许您在解决方案中解决这个问题,但它仍处于测试阶段。迁移允许您在代码中描述数据库的升级和降级事件。

答案 1 :(得分:3)

没有RTM版本的EF具有此功能。一旦你去生产,你必须自己处理它。常见的方法是在生产中关闭数据库初始化程序并使用VS Premium或RedGate Database等工具进行比较,以比较生产和开发数据库并创建更改SQL脚本。

您也可以尝试使用EF Migrations,这正是您要求的工具。问题是它仍处于测试阶段(但一旦完成,它应该是EF 4.3的一部分),因此它不必在所有情况下都能工作,并且功能/ API可以在RTM中发生变化。