如何将相同的名称应用于不同的迁移?
How to apply same name to different migrations?
Entity Framework Core 不允许我用相同的名称命名不同的迁移。虽然名称仍然会不同,因为时间戳总是不同的。错误是:
The name '_' is used by an existing migration.
以前版本的 EF (.NET Framework) 允许这样做。
Although the names will still be different, because the timestamp is always different
这并不完全正确。虽然迁移的名称中使用了时间戳,但生成的迁移名称 class 本身将是没有任何时间戳的名称。
这个名字是在CSharpMigrationsGenerator class using ICSharpHelper.Identifier里面生成的。一个实现这个接口的实例是使用依赖注入注入的,这听起来确实具有用你自己的代码覆盖实现的能力,但是我没有看到使用开箱即用的命令行工具发生这种情况,你可能需要重新发明你自己的迁移工具或从您的应用程序代码执行此操作。
即使您成功克服了这一部分,您仍然需要处理其他内部问题。例如,IMigrationsAssembly.Migrations 还包含没有时间戳部分的迁移名称,因此您仍然需要调整名称以使其唯一,因为字典根本不允许重复键。
Summa summarum,这可能是可能的,但听起来不值得为当前版本的 EF Core 付出努力。
Entity Framework Core 不允许我用相同的名称命名不同的迁移。虽然名称仍然会不同,因为时间戳总是不同的。错误是:
The name '_' is used by an existing migration.
以前版本的 EF (.NET Framework) 允许这样做。
Although the names will still be different, because the timestamp is always different
这并不完全正确。虽然迁移的名称中使用了时间戳,但生成的迁移名称 class 本身将是没有任何时间戳的名称。
这个名字是在CSharpMigrationsGenerator class using ICSharpHelper.Identifier里面生成的。一个实现这个接口的实例是使用依赖注入注入的,这听起来确实具有用你自己的代码覆盖实现的能力,但是我没有看到使用开箱即用的命令行工具发生这种情况,你可能需要重新发明你自己的迁移工具或从您的应用程序代码执行此操作。
即使您成功克服了这一部分,您仍然需要处理其他内部问题。例如,IMigrationsAssembly.Migrations 还包含没有时间戳部分的迁移名称,因此您仍然需要调整名称以使其唯一,因为字典根本不允许重复键。
Summa summarum,这可能是可能的,但听起来不值得为当前版本的 EF Core 付出努力。