2014-09-26 22 views
12

我正在使用代碼優先方法開發mvc 5應用程序。程序集「SMSApp」中找到了多個遷移配置類型。指定要使用的名稱

我正面臨一個問題。在我第一次嘗試下面的命令時,它工作並在該數據庫中生成表。但是當我更改了一些類,然後嘗試了第2個查詢時,它在那種情況下工作,但是當我嘗試第三個命令時,它將此消息傳遞給我。

 
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 

看到的第一個錯誤:

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. 

之後,我執行下面的命令,它給了下面的例外。

更新,數據庫-TargetMigration $ InitialDatabase -verbose

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. 

我現在擔心如何解決呢?

+0

發佈您的Web.config和Configuration/Migrations.cs,並且如果您有其他地方的數據上下文或initilizer發佈它們。 – Yoda 2014-09-29 08:20:49

回答

21

您需要指定更新數據庫時要使用的配置。

Update-Database -ConfigurationTypeName MyRenamedConfiguration 
+2

您還可以使用縮寫符號: 更新數據庫 - 配置MyRenamedConfiguration 或甚至 更新數據庫 - 配置MyRenamedConfiguration 或任何唯一的縮寫例如。 更新數據庫-Conf MyRenamedConfiguration – 2016-11-08 17:17:19

相關問題