Entity framework 如何在同一个.cs文件上重新创建初始迁移

Entity framework 如何在同一个.cs文件上重新创建初始迁移,entity-framework,entity-framework-6,Entity Framework,Entity Framework 6,在EF代码中很常见,首先,我生成了一个“初始创建”迁移文件,其中包含一个过时的数据库模型(我正在开发应用程序,因此模型仍在更改)。现在我在代码中定义了一个“新模型”,而不是为此创建新的迁移,我只想更新已经存在的文件,因为它仍然是初始的创建迁移 我试过用这个,但运气不好 更新数据库-targetmigration$initialcreate 它回来了 Unable to update database to match the current model because there are pen

在EF代码中很常见,首先,我生成了一个“初始创建”迁移文件,其中包含一个过时的数据库模型(我正在开发应用程序,因此模型仍在更改)。现在我在代码中定义了一个“新模型”,而不是为此创建新的迁移,我只想更新已经存在的文件,因为它仍然是初始的创建迁移

我试过用这个,但运气不好

更新数据库-targetmigration$initialcreate

它回来了

Unable to update database to match the current model because there are pending changes and automatic migration is disabled. Either write the pending model changes to a code-based migration or enable automatic migration. Set DbMigrationsConfiguration.AutomaticMigrationsEnabled to true to enable automatic migration.
You can use the Add-Migration command to write the pending model changes to a code-based migration.
我也试过这个,但它总是创建一个新的.cs文件

添加迁移初始值创建


我会感谢你的帮助,你可以看看我是如何解决这个问题的

使用这种方法时要小心,因为在我的场景中,我仍处于开发阶段,因此不需要保留数据库或数据

如果要覆盖当前的“InitialCreate”文件并重新生成数据库,请执行以下步骤:

1) 在包管理器控制台中运行:

添加迁移初始值create-force

2) 删除物理数据库(使用SSMS、T-SQL或首选数据库)

3) 在包管理器控制台中运行:

更新数据库-TargetMigration:0 |更新数据库-force |更新数据库-force

如果您不关心当前的“InitialCreate”文件本身,希望创建一个新文件并重新生成数据库,请执行以下步骤:

1) 删除当前的“InitialCreate”.cs文件

3) 在包管理器控制台中运行:

添加迁移初始值创建

4) 删除物理数据库(使用SSMS、T-SQL或首选数据库)

4) 在包管理器控制台中运行:

更新数据库-TargetMigration:0 |更新数据库-force |更新数据库-force

我的项目解决了。
在包管理器控制台中运行:

  • 删除数据库
  • 移除迁移
  • 添加迁移初始值创建
  • 更新数据库

  • 尝试通过在Package Manager控制台中写入
    更新数据库来更新数据库。

    只需从“迁移”文件夹中删除初始迁移文件,然后重试。

    据我所知,您不想创建新迁移吗?如果需要,您可以尝试删除整个迁移文件夹,然后再次执行
    启用迁移
    。您将看到新的
    InitialCreate
    文件将包含您的模型。但是,这似乎不合适,因为代码优先迁移意味着包含不同迁移周期的列表,其中包含您在模型中添加的内容(无论是类还是属性)。您可以选择回滚到上一次迁移(您已经使用了
    -targetmigration
    ),因此它非常灵活。此外,如果上述操作不起作用,您可以尝试
    更新数据库-targetmigration:0
    。@ShawnYan是的,我不想创建新的迁移,因为我的模型仍在更改,因此没有“迁移”然而。好吧,我明白了,那么你能回滚到初始创建吗?@ShawnYan是的,我可以,我的想法是在DB设计过程结束之前只保留一个“初始迁移”文件。出于某种原因,我必须右键单击解决方案,然后选择“清洁解决方案”菜单项。@Dinch谢谢,节省了我的时间。我认为您所做的是必要的,否则在我的情况下,这里的大多数建议也不起作用。@Dinch还必须运行删除迁移两次。我建议更新答案并将@Dinch suggestion添加到清理解决方案中(在执行删除迁移后)。我猜VisualStudio正在.pdb文件或其他地方缓存信息。加上干净的溶液,这对我很有效。