EF6: renommer un espace de noms à l’aide du code d’abord Migrations

Il m’est possible de renommer l’espace de noms de l’ensemble de mon projet (y compris bien sûr: classe DbContext, classes de configuration Migrations, etc.) sans rien casser ni recréer toutes mes migrations?

Dis, j’ai le projet MyProject, qui est l’espace de noms

Foo.MyProject 

Et mes classes de configuration sont en

 Foo.MyProject.Migrations 

Dites que je veux renommer l’espace de noms Foo pour Bar , et bien sûr mon espace de noms Configurations sera maintenant

 Bar.MyProject.Configurations 

Existe-t-il un moyen correct de le faire et de maintenir toutes mes migrations actuelles toujours actives? Ces méthodes impliquent-elles d’éditer manuellement la table ___MigrationHistory ou quelque chose de ce genre? (En un coup d’œil, je vois la colonne ContextKey, que je pense devoir modifier manuellement.)

Oui, vous devez effectivement mettre à jour la ContextKey dans la table __MigrationHistory. Code:

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

Une bonne lecture sur le sujet du changement de nom d’espaces de noms avec EF6:

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