传统上,我总是手工编写我的 sql 脚本,因此它们既漂亮又干净(我不喜欢生成的脚本)并且发布到发布,我提供了一个全新的安装脚本和一个来自以前版本的迁移脚本,它创建了新的表,更改现有表等。这都是非常标准的。
我真的没有太多时间先玩 EF 4 代码,但如果它在生产环境中实际上是可行的,我很感兴趣使用它。
假设您有一种代码优先的方法,如果数据库不存在,将自动创建数据库。如果您发布具有架构/模型更改的新版本软件会发生什么。EF 是否足够智能以更新数据库架构以匹配更新后的 EF 模型?
设想
- 客户端在其服务器上安装 asp.net MVC 网站。首次运行时,会创建一个新数据库
- 客户使用网站一段时间,数据库中填充了一些数据
- 同时发布了新版本的网站,并更改了 EF 模型
- 客户端下载新版本,部署网站并指向现有数据库
代码首先只对初始部署有用,还是足够聪明地更新现有数据库版本以像这样发布?