可以安全删除哪些迁移文件

Which migration files can safely be deleted

我正在创建一个新的代码优先 Web 应用程序,但使用来自另一个应用程序的代码作为起点。但我更愿意从新项目中删除所有不需要的迁移。

目前,我的迁移是这样的:

我很确定我需要保留 ApplicationDbContextModelSnapshot.csApplicationDbContext.cs.

所以我的问题是:我可以安全地删除所有其他迁移文件吗?

注意:没有任何变化我想在新应用程序中恢复迁移,所以这不是问题。

为什么不直接删除它们并添加一个空的迁移来检查?如果它坏了,那么你就有了答案。然后从版本控制中恢复。

但柯克沃尔说的是对的。保留您的 ApplicationDbContext 并添加初始迁移。

总结一下你的问题,你希望有一个干净的状态,而不是让你随着时间的推移积累的所有迁移污染你的迁移文件夹。在开始一个新项目时,我经常需要自己做这件事,并在对我的最终架构感到满意之前进行大量迭代。

好消息是 Entity Framework 原生支持这一功能,只有一个警告:如果您曾经 hand-roll 自己的迁移(通过调用 Add-Migration 然后编辑结果迁移文件),也许出于性能原因添加自定义索引,您必须确保在此过程中恢复这些索引。

您所要做的就是删除整个迁移文件夹(包括快照)并重新开始,就好像您是从头开始创建项目一样。通常,当您创建第一个迁移时,您已经定义了一些实体(毕竟这就是您要创建迁移的原因);您只是将其提升到一个新的水平,并希望您的整个数据库都参与该迁移。

一旦您删除了迁移文件夹,EF 就不再认为您的项目有任何迁移——就像我说的,您是从头开始。因此,您所要做的就是调用 Add-Migration [MigrationName](即 Add-Migration InitialMigration),它将使用创建整个数据库所需的一切搭建迁移框架。

注意:在我的评论中,我建议您需要先调用 Enable-Migrations,但这显然不再需要,因此您可以直接调用Add-Migration.