在程序集"SMSApp"中找到了多个迁移配置类型.指定要使用的名称

mai*_*ifs 18 .net asp.net-mvc entity-framework ef-code-first

我正在使用代码优先方法开发mvc 5应用程序.

我正面临一个问题.在我第一次尝试下面的命令时,它在该数据库中工作并生成表.但是当我更改了一些类,然后尝试了前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.
Run Code Online (Sandbox Code Playgroud)

之后,我执行了以下命令,它给出了以下异常.

Update-Database -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.
Run Code Online (Sandbox Code Playgroud)

我不担心如何解决它?

Ami*_*ari 31

您需要指定更新数据库时要使用的配置.

Update-Database -ConfigurationTypeName MyRenamedConfiguration
Run Code Online (Sandbox Code Playgroud)

  • 您还可以使用缩短表示法:Update-Database -Configuration MyRenamedConfiguration,甚至Update-Database -Config MyRenamedConfiguration或任何唯一的缩写,例如.Update-Database -Conf MyRenamedConfiguration (2认同)