如何将相同的名称应用于不同的迁移?

时间:2019-02-11 10:30:46

标签: asp.net-core-mvc entity-framework-core ef-migrations

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

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

以前版本的EF(.NET Framework)允许执行此操作。

1 个答案:

答案 0 :(得分:1)

  

尽管名称仍然会有所不同,因为时间戳始终不同

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

此名称是在CSharpMigrationsGenerator类内部使用ICSharpHelper.Identifier生成的。使用依赖关系注入来注入实现此接口的实例,它听起来具有使用自己的代码覆盖实现的能力,但是我看不到使用现成的命令行工具会发生这种情况,您可能需要重新发明自己的迁移工具,或者从您的应用程序代码中完成。

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

总结一下,也许是可能的,但是听起来不值得使用当前版本的EF Core。