2015-07-21 18 views
6

Tüm projemin ad alanını (tabii ki: DbContext sınıfı, Geçişler yapılandırma sınıfları, vb. Dahil) bir şeyi bozmadan veya tüm geçişlerimi yeniden oluşturmak zorunda kalmadan yeniden adlandırmak mümkün müdür?EF6: Kod İlk Geçişlerini kullanarak ad alanını yeniden adlandırma

Demek,

Foo.MyProject.Migrations 

Ben Bar için Foo ad adlandırmak istediğiniz Say içinde

Foo.MyProject 

olan ad Proje Projem, Ve benim yapılandırma sınıfları var ve bir Tabi ki Yapılandırmalar ad alanı şimdi

Bar.MyProject.Configurations 

Bunu yapmak için doğru bir yol var mı ve şu andaki tüm geçişlerimi hala çalışıyor mu? Bu yollar ___MygrationHistory tablosunu veya başka bir şeyi el ile düzenlemeyi içerir mi? (bir bakışta, el ile düzenlemem gerekenden şüphelendiğim ContextKey sütununu görüyorum.)

cevap

10

Evet, gerçekten de, __MigrationHistory tablosundaki ContextKey'i güncellemeniz gerekiyor. Kod:

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

Ef6 ile yeniden adlandırma ad konusuyla ilgili iyi bir okuma:

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

+0

Dur. Tam olarak ihtiyacım olan şey! Teşekkürler. –