2014-09-26 8 views
12

Kullanılacak kişinin adını belirtin Kod ilk yaklaşımını kullanarak bir mvc 5 uygulaması geliştiriyorum.Birden çok geçişi yapılandırma 'SMSApp' derlemesinde yapılandırma türü bulundu.

Bir sorunla karşılaşıyorum. İlk kez, comandları aşmayı denediğimde, bu veritabanındaki tabloyu çalıştı ve oluşturdu. ama bazı sınıfları değiştirdiğimde ve ilk 2 sorgu ile denediğimde, bu durumda çalıştı, ancak üçüncü komutu denediğimde bu mesajı bana verdi. aşağıda istisna verdi i aşağıda komutu infaz Bundan sonra

PM> add-migration -ConfigurationTypeName SMSApp.DAL.IdentityMigrations.Configuration "InitialCreate" 
Scaffolding migration ' '. 
The Designer Code for this migration file includes a snapshot of your current Code First model. This snapshot is used to calculate the changes to your model when you scaffold the next migration. If you make additional changes to your model that you want to include in this migration, then you can re-scaffold it by running 'Add-Migration InitialCreate' again. 

A previous migration called 'InitialCreate' was already applied to the target database. If you meant to re-scaffold 'InitialCreate', revert it by running 'Update-Database -TargetMigration $InitialDatabase', then delete '201409261933262_InitialCreate1.cs' and run 'Add-Migration InitialCreate' again. 

:

 
First step 
========== 

enable-migrations -ContextTypeName IdentityDb -MigrationsDirectory DAL\IdentityMigrations 

enable-migrations -ContextTypeName SMSContext -MigrationsDirectory DAL\SMSMigrations 

Second Step 
=========== 

add-migration -ConfigurationTypeName SMSApp.DAL.IdentityMigrations.Configuration "InitialCreate" 

add-migration -ConfigurationTypeName SMSApp.DAL.SMSMigrations.Configuration "InitialCreate" 

Third Step 
========== 

update-database -ConfigurationTypeName SMSApp.DAL.IdentityMigrations.Configuration -verbose 

update-database -ConfigurationTypeName SMSApp.DAL.SMSMigrations.Configuration -verbose 

ilk hatayı görüyoruz.

Güncelleme-Veritabanı -TargetMigration $ InitialDatabase bunu nasıl çözüleceği Merak ediyorum şimdi

PM> Update-Database -TargetMigration $InitialDatabase -verbose 
Using StartUp project 'SMSApp'. 
Using NuGet project 'SMSApp'. 
Specify the '-Verbose' flag to view the SQL statements being applied to the target database. 
System.Data.Entity.Migrations.Infrastructure.MigrationsException: More than one migrations configuration type was found in the assembly 'SMSApp'. Specify the name of the one to use. 
    at System.Data.Entity.Utilities.TypeFinder.FindType(Type baseType, String typeName, Func`2 filter, Func`2 noType, Func`3 multipleTypes, Func`3 noTypeWithName, Func`3 multipleTypesWithName) 
    at System.Data.Entity.Migrations.Utilities.MigrationsConfigurationFinder.FindMigrationsConfiguration(Type contextType, String configurationTypeName, Func`2 noType, Func`3 multipleTypes, Func`3 noTypeWithName, Func`3 multipleTypesWithName) 
    at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.FindConfiguration() 
    at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.GetMigrator() 
    at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.Run() 
    at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) 
    at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) 
    at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner) 
    at System.Data.Entity.Migrations.Design.ToolingFacade.Update(String targetMigration, Boolean force) 
    at System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0() 
    at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) 
More than one migrations configuration type was found in the assembly 'SMSApp'. Specify the name of the one to use. 

-verbose?

+0

Web.config ve Configuration/Migrations.cs öğelerinizi gönderin ve veri bağlamı veya başlatıcıların başka herhangi bir yere gönderilmesini sağlayın. – Yoda

cevap

21

Veritabanlarını güncellerken hangi yapılandırmayı kullanmak istediğinizi belirtmeniz gerekir.

Update-Database -ConfigurationTypeName MyRenamedConfiguration 
+2

Ayrıca bir kısaltma notasyonu kullanabilirsiniz: Güncelleme Veritabanı-Yapılandırma MyRenamedConfiguration veya Güncelleme-Veritabanı -Config MyRenamedConfiguration veya benzeri olmayan herhangi bir kısaltma. Güncelleştirme-Veritabanı -Config MyRenamedConfiguration –