EF6:使用代码优先迁移重命名命名空间

本文关键字:迁移 重命名 命名空间 代码 EF6 | 更新日期: 2023-09-27 18:03:46

我有可能重命名我的整个项目的命名空间(当然包括:DbContext类,Migrations配置类等),而不会破坏任何东西或必须重新创建我的所有迁移?

假设我有一个Project MyProject,命名空间是

Foo.MyProject

配置类在

Foo.MyProject.Migrations

假设我想重命名Foo命名空间为Bar,当然我的Configurations命名空间现在将是

Bar.MyProject.Configurations

是否有任何正确的方法来做到这一点,并保持所有当前的迁移仍然工作?这些方法是否涉及手动编辑__migrationhistory表或其他东西?(我一眼就看到了ContextKey列,我怀疑我应该手动编辑。)

EF6:使用代码优先迁移重命名命名空间

是的,您确实需要更新__migrationhistory表中的ContextKey。代码:

UPDATE [dbo].[__MigrationHistory] 
   SET [ContextKey] = 'New_Namespace.Migrations.Configuration'
 WHERE [ContextKey] = 'Old_Namespace.Migrations.Configuration'

关于使用EF6重命名命名空间的一个很好的阅读主题:

http://jameschambers.com/2014/02/changing-the-namespace-with-entity-framework-6-0-code-first-databases/