历史 table 不存在时的自动迁移

Automatic Migrations when history table doesn't exist

在团队环境中,我们有一个成员的数据库已经包含模型中的一些 table,但没有迁移历史 table。使用 EF 自动迁移,我们如何升级数据库以便创建历史记录 table、添加缺失的 table 和现有的 alter/upgrade?我们需要升级该成员的数据库,因为现有 table 有数据。

我认为 EF 不支持您的方案,但请继续寻找。

如果我需要这样做,我会:

  1. 创建一个空项目
  2. 将当前数据库反向工程为 EF 实体上的集合
  3. 让该项目创建一个新数据库,其中将包含历史记录 table
  4. 复制历史table到主数据库
  5. 运行升级数据库的主应用

当然我会先进行备份,并将临时项目及其 DbContext 命名为与主项目相同的名称,以防 EF 以某种方式将它们包含在历史记录中 table。

还有另一种方法:

  1. 让 EF 在空数据库上创建 tables
  2. 使用 SSMS import/export 向导从他们的旧数据库复制该用户的所有数据

我建议哪个:第二个,我会做哪个:第一个,因为它更冒险!