【问题标题】:More than one migrations configuration type was found in the assembly 'SMSApp'. Specify the name of the one to use在程序集“SMSApp”中发现了一种以上的迁移配置类型。指定要使用的名称
【发布时间】:2014-11-21 22:03:49
【问题描述】:

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

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

第一步 ========== 启用迁移 -ContextTypeName IdentityDb -MigrationsDirectory DAL\IdentityMigrations 启用迁移 -ContextTypeName SMSContext -MigrationsDirectory DAL\SMSMigrations 第二步 =========== 添加迁移-ConfigurationTypeName SMSApp.DAL.IdentityMigrations.Configuration "InitialCreate" 添加迁移-ConfigurationTypeName SMSApp.DAL.SMSMigrations.Configuration "InitialCreate" 第三步 ========== 更新数据库-ConfigurationTypeName SMSApp.DAL.IdentityMigrations.Configuration -verbose 更新数据库-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.

现在我很担心如何解决它?

【问题讨论】:

  • 发布您的 Web.config 和 Configuration/Migrations.cs,如果您在其他任何地方有数据上下文或初始化程序,也发布它们。

标签: .net asp.net-mvc entity-framework ef-code-first


【解决方案1】:

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

Update-Database -ConfigurationTypeName MyRenamedConfiguration

【讨论】:

  • 您还可以使用缩写符号:Update-Database -Configuration MyRenamedConfiguration 甚至 Update-Database -Config MyRenamedConfiguration 或任何唯一的缩写,例如。更新数据库-Conf MyRenamedConfiguration
【解决方案2】:

启用

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

    1. 如果您的项目中已经添加了第一个 DBContext,那么您必须添加第二个 DBContext。
    2. 转到工具>Nuget-Package-Console。
    3. Enable-Migrations -ContextTypeName ProjectName.DBContextName -MigrationsDirectory NameofFile 要创建的文件
    4. 在您的项目中成功创建了第二次迁移。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多