2015-07-21 17 views
6

È possibile rinominare lo spazio dei nomi del mio intero progetto (incluso ovviamente: classe DbContext, classi di configurazione Migrations, ecc.) Senza interrompere nulla o dover ricreare tutte le mie migrazioni?EF6: ridenominazione dello spazio dei nomi utilizzando Code First Migrations

Di ', ho progetto MyProject, che spazio dei nomi è

Foo.MyProject 

E le mie classi di configurazione sono in

Foo.MyProject.Migrations 

dire che voglio cambiare titolo Foo spazio dei nomi per bar, e di Ovviamente il mio spazio dei nomi Configurazioni ora sarà

Bar.MyProject.Configurations 

Esiste un modo corretto per fare ciò e mantenere tutte le mie migrazioni correnti ancora funzionanti? Questi metodi comportano la modifica manuale della tabella ___MigrationHistory o qualcosa del genere? (a colpo d'occhio vedo la colonna ContextKey, che sospetto dovrei modificare manualmente.)

risposta

10

Sì, è effettivamente necessario aggiornare il ContextKey nella tabella__MigrationHistory. Codice:

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

Una buona lettura sul tema degli spazi dei nomi ridenominazione con EF6:

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

+0

Whoa. Esattamente quello di cui avevo bisogno! Grazie. –

Problemi correlati