首页 > 解决方案 > 实体框架包迁移,设置起点

问题描述

在多个项目中,我想捆绑所有迁移,因为随着时间的推移,迁移的数量是巨大的。

然后我删除现有的迁移并在一个干净的数据库上创建一个新的迁移Add-Migrations 'Base entities',例如。

但是在现有实例上,我想设置可以跳过“基本实体”迁移。

谁能告诉我我该怎么做?

提前致谢!

标签: entity-framework

解决方案


我使用了以下过程:

  1. 记下最新的迁移 id,即文件名。例如。20210719105339_latest

  2. 确保依赖迁移的所有数据库都已随20210719105339_latest迁移更新。

  3. Migrations从文件夹中删除所有迁移。

  4. 使用 CLI 创建新的代码优先迁移:core: dotnet ef migrations add Base_Entities框架: Add-Migration -Name Base_Entities

  5. 更新生成的迁移文件名以匹配已删除的最新迁移:20210719105339_latest.cs,20210719105339_latest.Designer.cs

  6. 更新设计器文件中的迁移 ID。核心:Migration属性:[Migration("20210719105339_latest")]框架:属性IMigrationMetadata.Idstring IMigrationMetadata.Id { get { return "20210719105339_latest"; } }

由于数据库保存了已在__EFMigrationsHistory( framework:) __MigrationHistory表中运行的迁移的记录,因此它现在看起来就像您刚刚创建的迁移已经运行一样。

如果您有任何迁移正在创建不是由 EF 迁移生成的对象(例如视图、存储过程、函数、全文目录),则需要小心此过程,因为此设置将丢失,除非您将其复制到新的基地迁移。


推荐阅读