2010-08-29 101 views
7

使用codefirst EF4进行数据库重构的最佳做法是什么?首先使用EF 4代码重构代码/数据库模式 - 数据迁移

我很想知道当RecreateDatabaseIfModelChanges选项不可行时人们如何更改类和数据库。数据迁移将需要发生。

目前微软有先用模型做了一个解决方案:

http://blogs.msdn.com/b/adonet/archive/2010/02/08/entity-designer-database-generation-power-pack.aspx?PageIndex=2#comments

没有人有代码首先一个好的策略?

+0

你到底在找什么?你不*有*用CF重构你的数据库模式。 – TheCloudlessSky 2010-08-29 15:40:19

+3

如果您将它吹走并重新创建,则不必重构它,但除此之外,您将需要编写并应用迁移脚本,否则不会?否则它不会匹配代码。 – 2010-08-29 15:48:00

回答

1

我正在处理数据库上下文初始化程序,它将通知网站管理员模型和数据库模式是否不同步并显示不同。这对于喜欢对代码优先模型和数据库模式都有完全控制权的开发人员非常有用。检查出来:

https://github.com/rialib/efextensions

1

在我CodeFirst应用,本地编译有表示不生产是一个标志的app.config。当我不在生产时,它完全核实并重新创建数据库。由于我的生产数据库用户没有权限删除数据库,即使我的web.config变换以某种方式遗漏了(因此EF试图重新创建数据库),我的生产数据库不会被删除,而是会抛出异常。

我的工作流程是这样的:

  1. 退房与最新变化
  2. 快速烟雾/回归测试代码分公司生产(这应该之前就已经检查代码到生产分公司完成,但只是万一)
  3. 下载我的生产数据库的最新的备份和我的本地代码中创建(即使它的生产代码,因为它是本地IT RECR数据库之间我的本地SQLEXPRESS服务器
  4. 运行Open DBDiff上安装它使用数据库)与生产备份进行比较。
  5. 检查生成的脚本,并尝试将其与生产备份运行
  6. 假设没有发生错误,请覆盖代码生成的生产数据库并对生产数据执行测试以确保所有数据仍然完好无损;
  7. 在实际生产数据库上运行脚本。

步骤2自动创建一个基于最新数据模型的新的干净的数据库,所以我总是知道我有一个最新的数据库,没有可能没有生产准备的开发工作中的工件。

相关问题