EF6:使用Code First Migrations重命名命名空间

时间:2015-07-21 18:59:19

标签: c# entity-framework namespaces ef-migrations

我可以重命名整个Project的命名空间(当然包括:DbContext类,迁移配置类等),而不会破坏任何内容或不得不重新创建我的所有迁移?

说,我有Project MyProject,哪个命名空间是

Foo.MyProject

我的配置类在

Foo.MyProject.Migrations

我想要为 Bar 重命名 Foo 命名空间,当然我的配置命名空间现在将是

Bar.MyProject.Configurations

有没有正确的方法来保持我目前的所有迁移仍然有效? 这些方法是否涉及手动编辑___MigrationHistory表或其他什么? (一眼就能看到ContextKey列,我怀疑我应该手动编辑。)

1 个答案:

答案 0 :(得分:15)

是的,您确实需要更新_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/