EntityFramwork-如何使用现有数据库并应用迁移,同时仍支持自动升级?

时间:2018-10-16 10:47:03

标签: asp.net sql-server entity-framework

我有以下内容。

  • 映射到SQLSERVER数据库的实体框架模型。它具有生产数据,但是没有__MigrationHistory表。我需要保留数据。

  • 新的更新模型,包括新表,列等。

我想添加迁移,以便可以轻松管理模型更改。我想通过创建所有默认表来支持MigrateDatabaseToLatestVersion,并且能够在当前数据结构上应用迁移#2补丁。

我遵循了Microsoft的教程“ 使用现有数据库进行代码优先迁移”,但这给了我最初-ignoreChanges的问题,导致无法从头开始创建模型。我需要既可以重新创建它,又可以在没有迁移历史记录的情况下在现有数据库上添加迁移。这是因为初始迁移时的-ignoreChanges给了我一个空的up(),而第二个迁移脚本将仅包含修补表/列的代码。如果我不忽略更改,那么框架将尝试创建已经存在的表。

我当时正在考虑不要忽略初始迁移的更改,然后对所有现有表进行某种"CREATE TABLE IF NOT EXISTS"的操作,但这似乎是不可能的。

我敢打赌,我在公开场合遗漏了一些东西。什么事?

1 个答案:

答案 0 :(得分:1)

未经测试,但应该可以:

  • 使用旧模型创建_MigrationHistory表
  • 在生产数据库中复制/粘贴(选择/插入或任何etl方法)_MigrationHistory
  • 将模型更新为新模型
  • 创建新迁移
  • 将迁移推送到数据库。

首先在测试环境中做所有事情!