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

.net 在程序集';中找到多个迁移配置类型;SMSApp';。指定要使用的名称,.net,asp.net-mvc,entity-framework,ef-code-first,.net,Asp.net Mvc,Entity Framework,Ef Code First,我正在使用代码优先的方法开发一个MVC5应用程序 我面临一个问题。在我第一次尝试下面的命令时,它起作用并在该数据库中生成表。但是当我改变了更多的类,然后尝试前两个查询时,它在这种情况下起作用,但当我尝试第三个命令时,它给了我这个消息 First step ========== enable-migrations -ContextTypeName IdentityDb -MigrationsDirectory DAL\IdentityMigrations enable-migrations -

我正在使用代码优先的方法开发一个MVC5应用程序

我面临一个问题。在我第一次尝试下面的命令时,它起作用并在该数据库中生成表。但是当我改变了更多的类,然后尝试前两个查询时,它在这种情况下起作用,但当我尝试第三个命令时,它给了我这个消息

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 在我执行了下面的命令之后,它给出了下面的异常

更新数据库-TargetMigration$InitialDatabase-详细

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.
PM>更新数据库-TargetMigration$InitialDatabase-verbose
使用启动项目“SMSApp”。
使用NuGet项目“SMSApp”。
指定'-Verbose'标志以查看应用于目标数据库的SQL语句。
System.Data.Entity.Migrations.Infrastructure.MigrationsException:在程序集“SMSApp”中找到多个迁移配置类型。指定要使用的名称。
位于System.Data.Entity.Utilities.TypeFinder.FindType(类型baseType、字符串typeName、Func`2筛选器、Func`2 NotType、Func`3 multipleTypes、Func`3 NotTypeWithName、Func`3 MultipleTypeWithName)
位于System.Data.Entity.Migrations.Utilities.MigrationConfigurationFinder.FindMigrationConfiguration(类型contextType、字符串配置TypeName、Func`2 NotType、Func`3 MultipleType、Func`3 NotTypeWithName、Func`3 MultipleType WithName)
在System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.FindConfiguration()中
位于System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.GetMigrator()处
在System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.Run()中
在System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)处
在System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)处
位于System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner)
位于System.Data.Entity.Migrations.Design.ToolingFacade.Update(字符串targetMigration,布尔力)
在System.Data.Entity.Migrations.UpdateDatabaseCommand.c__DisplayClass2.b__0()中
位于System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(操作命令)
在程序集“SMSApp”中找到多个迁移配置类型。指定要使用的名称。

现在我担心如何解决它?

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

Update-Database -ConfigurationTypeName MyRenamedConfiguration
使能

  • 迁移
  • ContextTypeName DropDownList_plus_Crud_project.User_Complete
  • MigrationsDirectory Migrations.Identity

  • 如果项目中已经添加了第一个DBContext,则必须添加第二个DBContext
  • 转到工具>Nuget软件包控制台
  • 启用迁移-ContextTypeName ProjectName.DBContextName-要创建的文件的迁移目录名称
  • 已在项目中成功创建第二次迁移

发布您的Web.config和Configuration/Migrations.cs,如果您有数据上下文或initilizer,也可以在其他任何地方发布它们。您还可以使用缩写符号:Update Database-Configuration MyRenamedConfiguration,甚至Update Database-config MyRenamedConfiguration或任何唯一的缩写,例如Update Database-ConfMyRenamedConfiguration
Update-Database -ConfigurationTypeName MyRenamedConfiguration