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

EF6: Renaming namespace using Code First Migrations

我可以重命名整个项目的命名空间(当然包括:DbContext class、迁移配置 classes 等),而无需破坏任何东西或重新创建我所有的迁移?

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

Foo.MyProject

而我的配置class在

Foo.MyProject.Migrations

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

Bar.MyProject.Configurations

是否有任何正确的方法可以做到这一点并保持我当前的所有迁移仍然有效? 这些方法是否涉及手动编辑 ___MigrationHistory table 之类的? (我一眼就看到了 ContextKey 列,我怀疑我应该手动编辑它。)

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