Aynı problemle karşılaştım ve aşağıdaki çözümü kullandım (tümü Paket Yöneticisi Konsolundan)
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextA" -ContextTypeName MyProject.Models.ContextA
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextB" -ContextTypeName MyProject.Models.ContextB
Bu, Migrations klasöründe 2 ayrı klasör oluşturacaktır. Her biri oluşturulan Configuration.cs
dosyayı içerecektir . Maalesef bu Configuration.cs
dosyaları yeniden adlandırmanız gerekiyor, aksi takdirde iki tanesine sahip olmakla ilgili şikayetler olacaktır. Dosyalarımı ConfigA.cs
ve olarak yeniden adlandırdımConfigB.cs
DÜZENLEME : (Kevin McPheat'ın izniyle) Configuration.cs dosyalarını yeniden adlandırırken hatırlayın, ayrıca sınıf adlarını ve kurucuları yeniden adlandırın / EDIT
Bu yapı ile kolayca yapabilirsiniz
PM> Add-Migration -ConfigurationTypeName ConfigA
PM> Add-Migration -ConfigurationTypeName ConfigB
Yapılandırma dosyalarının yanındaki klasörün içinde taşıma için kod dosyaları oluşturacaktır (bu dosyaları bir arada tutmak güzeldir)
PM> Update-Database -ConfigurationTypeName ConfigA
PM> Update-Database -ConfigurationTypeName ConfigB
Ve son olarak, ancak en az değil, bu iki komut, ilgili veritabanlarına doğru geçişleri uygulayacaktır.
EDIT 08 Şubat 2016:
EF7 sürüm 7.0.0-rc1-16348 ile küçük bir test yaptım
Çalışmak için -o | --outputDir seçeneğini alamadım. Vermeye devam ettiMicrosoft.Dnx.Runtime.Common.Commandline.CommandParsingException: Unrecognized command or argument
Bununla birlikte, bir taşıma ilk kez eklendiğinde, Geçişler klasörüne eklenmiş gibi görünüyor ve ardından başka bir bağlam için geçiş otomatik olarak bir geçiş alt doldurucusuna yerleştiriliyor.
Orijinal adlar ContextA
bazı adlandırma kurallarını ihlal ediyor gibi görünüyor, bu yüzden şimdi ContextAContext
ve kullanıyorum ContextBContext
. Bu adları kullanarak aşağıdaki komutları kullanabilirsiniz: (dnx'imin hala paket yöneticisi konsolundan çalıştığını ve geçişleri yapmak için ayrı bir CMD penceresi açmayı sevmediğimi unutmayın)
PM> dnx ef migrations add Initial -c "ContextAContext"
PM> dnx ef migrations add Initial -c "ContextBContext"
Bu, için Migrations
klasörde bir model anlık görüntüsü ve ilk geçişi oluşturacaktır ContextAContext
. Bu ContextB
dosyaları içeren bir klasör oluşturacaktır .ContextBContext
Manuel olarak bir ContextA
klasör ekledim ve taşıma dosyalarını ContextAContext
bu klasörden taşıdım . Daha sonra bu dosyaların içindeki ad alanını yeniden adlandırdım (anlık görüntü dosyası, ilk geçiş ve ilk geçiş dosyasının altında üçüncü bir dosya olduğuna dikkat edin ... designer.cs). Ad alanına eklemem .ContextA
gerekiyordu ve buradan çerçeve onu otomatik olarak yeniden ele alıyor.
Aşağıdaki komutları kullanmak, her bağlam için yeni bir geçiş oluşturacaktır.
PM> dnx ef migrations add Update1 -c "ContextAContext"
PM> dnx ef migrations add Update1 -c "ContextBContext"
ve oluşturulan dosyalar doğru klasörlere yerleştirilir.