EF 4代码如何首先处理生产环境中的架构更改?

Jos*_*yes 14 asp.net-mvc entity-framework entity-framework-4 ef4-code-only

传统上我总是手工编写我的sql脚本,所以它们很好而且干净(我不是生成者的粉丝)并且发布到发布版本,我提供了一个全新的安装脚本和来自之前版本的迁移脚本表,改变现有的表等.这都非常标准.

我没有太多时间来使用EF 4代码,但如果它在生产环境中实际可行,我很有兴趣使用它.

假设你有一个代码优先的方法,如果一个数据库不存在,将自动创建一个数据库.如果您发布具有架构/模型更改的软件的新版本会发生什么.EF是否足够智能更新数据库模式以匹配更新的EF模型?

脚本

  1. 客户端在其服务器上安装asp.net MVC网站.首次运行时,将创建一个新的数据库
  2. 客户端使用网站一段时间,数据库将填充一些数据
  3. 与此同时,该网站的新版本发布,EF模型也发生了变化
  4. 客户端下载新版本,部署网站并指向现有数据库

代码首先仅对初始部署有用,还是足够聪明以更新现有数据库版本以便像这样发布?

Mor*_*avi 6

从EF CTP4开始,每次更改对象模型时都会删除并重新创建数据库(这不是默认约定,您必须通过设置数据库初始化策略明确告知EF Code-First这样做).

话虽如此,EF团队正在积极致力于数据库演进(又称迁移)解决方案,该解决方案完全针对您的场景:随着对象模型随时间变化而演变数据库架构的解决方案,实质上会尝试将数据库更改为与您的模型同步而不是重新创建它.

根据EF团队的说法,此功能将作为EF下一版本的一部分提供,该版本将于2011年第一季度发布.