首先用EF 4代码重构代码/数据库模式

使用codefirst EF4进行数据库重构的最佳做法是什么?

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

目前微软有一个解决方案,首先使用模型进行此操作:

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

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


EF团队一直致力于EF的迁移功能,以解决这个问题。

http://blogs.msdn.com/b/efdesign/archive/2010/10/22/code-first-database-evolution-aka-migrations.aspx

Scott Gu最近在欧洲巡演时表示,他们很快就会发布这个功能。 我屏住呼吸。

令人兴奋的更新:

现已发布为CTP:http://blogs.msdn.com/b/adonet/archive/2011/07/27/code-first-migrations-august-2011-ctp-released.aspx


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

https://github.com/rialib/efextensions


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

我的工作流程如下所示:

  • 查看最新更改的代码生产分支
  • 快速抽烟/回归​​测试(这应该在将代码检入生产分支之前完成,但以防万一)
  • 下载我的生产数据库的最新备份并将其安装在我的本地SQLEXPRESS服务器上
  • 在数据库之间运行Open DBDiff,创建本地代码(即使它是生产代码,因为它是本地的,它将重新创建数据库)与生产备份进行比较。
  • 查看生成的脚本并尝试针对生产备份运行它们
  • 假定没有发生错误,请覆盖数据库,该代码使用生产备份生成代码,并根据生产数据进行测试,以确保所有数据仍然完好无损;
  • 在真实的生产数据库上运行脚本。
  • 第二步根据最新的数据模型自动创建一个新的干净的数据库,所以我总是知道我有一个最新的数据库,没有来自可能还没有生产准备的开发工作的工件。

    链接地址: http://www.djcxy.com/p/2597.html

    上一篇: How Refactor Code/DB schema with EF 4 code first

    下一篇: based authorization in ASP.NET