重置entity framework迁移

我已经把我的迁移IgnoreChanges了,我在初始迁移时使用了IgnoreChanges ,但是现在我想删除所有的迁移,并开始使用所有逻辑进行初始迁移。

当我删除文件夹中的迁移,并尝试和Add-Migration它不会生成一个完整的文件(这是空的 – 因为我没有做任何改变,因为我上次,但现在删除,迁移)。

有没有Disable-Migrations命令,所以我可以重新运行Enable-Migrations

你需要 :

  1. 删除状态:删除项目中的migrations文件夹; 和
  2. 删除数据库中的__MigrationHistory表(可能在系统表下); 然后
  3. 在程序包pipe理器控制台中运行以下命令:

     Enable-Migrations -EnableAutomaticMigrations -Force 

    使用或不使用-EnableAutomaticMigrations

  4. 最后,你可以运行:

     Add-Migration Initial 

问题:你已经搞糟了你的迁移,你想重置它,而不删除你现有的表。

问题:由于EF想从头开始创build表,因此无法使用数据库中的现有表来重置迁移。

该怎么办:

  1. 从Migrations_History表中删除现有的迁移。

  2. 从Migrations文件夹中删除现有的迁移。

  3. 运行添加迁移重置。 这将在您的Migration文件夹中创build一个包括创build表的迁移(但不会运行,因此不会出错)。

  4. 您现在需要在MigrationHistory表中创build初始行,以便EF具有当前状态的快照。 如果您申请迁移,EF将执行此操作。 但是,由于表已经存在于数据库中,因此无法应用您刚刚创build的迁移。 因此,进入迁移并注释掉“Up”方法中的所有代码。

  5. 现在运行update-database。 它将应用迁移(而不实际更改数据库)并在MigrationHistory中创build一个快照行。

您现在已经重置您的迁移,并可能继续正常的迁移。

怎么样

 Update-Database –TargetMigration: $InitialDatabase 

在包pipe理器控制台? 它应该将所有更新重置为其早期状态。

参考链接: Code First Migrations – 迁移到特定版本(包括降级)

要解决这个问题,你需要:

  1. 删除Migrations文件夹中的所有* .cs文件。

  2. 删除数据库中的_MigrationHistory表

  3. 运行Enable-Migrations -EnableAutomaticMigrations -Force

  4. 运行Add-Migration Reset

然后,在public partial class Reset : DbMigration类中,需要注释所有现有和现有的表:

 public override void Up() { // CreateTable( // "dbo.<EXISTING TABLE NAME IN DATABASE> // ... // } ... } 

如果你错过了这一切都将失败,你必须重新开始!

  1. 现在运行Update-Database -verbose

如果你已经完成了上述工作,这应该是成功的,现在你可以照常进行了。

我的问题原来是我手动删除Migrations文件夹。 我这样做是因为我想备份内容,所以我只是将该文件夹拖出项目。 我稍后通过将其放回(在创build备份副本之后),然后通过在“解决scheme资源pipe理器”中右键单击并从popup菜单中select“删除”来删除Migrations文件夹,从而解决了问题。

在EntityFramework 6中,请尝试:

 Add-Migration Initial 

以便更新最初的迁移文件。

在EF6中

  1. 删除“迁移”文件夹中的所有文件…但不是“初始创build”或“configuration”。
  2. 删除数据库。
  3. 现在运行Add-Migration Initial
  4. 现在你可以'更新数据库',一切都会好的。
 Enable-Migrations -EnableAutomaticMigrations -Force