首页 > 解决方案 > 如何将相同的名称应用于不同的迁移?

问题描述

Entity Framework Core 不允许我用相同的名称命名不同的迁移。尽管名称仍然会有所不同,因为时间戳总是不同的。错误是:

The name '_' is used by an existing migration.

以前版本的 EF (.NET Framework) 允许这样做。

标签: asp.net-core-mvcentity-framework-coreentity-framework-migrations

解决方案


虽然名称仍然会不同,因为时间戳总是不同的

这并不完全正确。尽管迁移的名称在其中使用了时间戳,但生成的迁移类本身的名称将是没有任何时间戳的名称。

此名称是在CSharpMigrationsGenerator类中使用ICSharpHelper.Identifier生成的。使用依赖注入注入实现此接口的实例,这听起来确实具有使用您自己的代码覆盖实现的能力,但是我没有看到使用开箱即用的命令行工具发生这种情况,您可能需要重新发明自己的迁移工具或从您的应用程序代码中执行此操作。

即使您确实设法克服了这一部分,您还需要处理其他内部问题。例如,IMigrationsAssembly.Migrations还包含没有时间戳部分的迁移名称,因此您仍然需要调整名称以使其唯一,因为字典根本不允许重复键。

总结一下,这可能是可能的,但听起来不值得为当前版本的 EF Core 付出努力。


推荐阅读