Entity framework 如何在同一个.cs文件上重新创建初始迁移
在EF代码中很常见,首先,我生成了一个“初始创建”迁移文件,其中包含一个过时的数据库模型(我正在开发应用程序,因此模型仍在更改)。现在我在代码中定义了一个“新模型”,而不是为此创建新的迁移,我只想更新已经存在的文件,因为它仍然是初始的创建迁移 我试过用这个,但运气不好 更新数据库-targetmigration$initialcreate 它回来了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
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文件或其他地方缓存信息。加上干净的溶液,这对我很有效。