在程序集“SMSApp”中找到了多个迁移配置类型。指定要使用的名称 [英] More than one migrations configuration type was found in the assembly 'SMSApp'. Specify the name of the one to use

查看:839
本文介绍了在程序集“SMSApp”中找到了多个迁移配置类型。指定要使用的名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



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

 
第一步
==========

启用迁移-ContextTypeName IdentityDb -MigrationsDirectory DAL\IdentityMigrations

启用迁移-ContextTypeName SMSContext -MigrationsDirectory DAL\SMSMigrations

第二步
===========

添加迁移 - ConfigurationTypeName SMSApp.DAL.IdentityMigrations.ConfigurationInitialCreate

add-migration -ConfigurationTypeName SMSApp.DAL.SMSMigrations.ConfigurationInitialCreate

第三步
== ========

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

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

看到第一个错误:

  PM> add-migration -ConfigurationTypeName SMSApp.DAL.IdentityMigrations.ConfigurationInitialCreate
脚手架迁移。
此迁移文件的Designer代码包含您当前的Code First模型的快照。当您支持下一次迁移时,此快照用于计算模型的更改。如果您要在此迁移中对模型进行其他更改,那么可以通过再次运行Add-Migration InitialCreate来重新构建它。

以前称为InitialCreate的迁移已经应用于目标数据库。如果您打算重建InitialCreate,请通过运行Update-Database -TargetMigration $ InitialDatabase来恢复它,然后删除'201409261933262_InitialCreate1.cs'并再次运行Add-Migration InitialCreate。

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



更新数据库-TargetMigration $ InitialDatabase -verbose

  PM> Update-Database -TargetMigration $ InitialDatabase -verbose 
使用StartUp项目'SMSApp'。
使用NuGet项目'SMSApp'。
指定'-Verbose'标志来查看应用于目标数据库的SQL语句。
System.Data.Entity.Migrations.Infrastructure.MigrationsException:在程序集SMSApp中找到了多个迁移配置类型。指定要使用的名称。
在System.Data.Entity.Utilities.TypeFinder.FindType(Type baseType,String typeName,Func`2过滤器,Func`2 noType,Func`3 multipleTypes,Func`3 noTypeWithName,Func`3 multipleTypesWithName)
在System.Data.Entity.Migrations.Utilities.MigrationsConfigurationFinder.FindMigrationsConfiguration(键入contextType,String configurationTypeName,Func`2 noType,Func`3 multipleTypes,Func`3 noTypeWithName,Func`3 multipleTypesWithName)
在系统。 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 runner)
在System.Data.Entity.Migrations.Design.To oingFacade.Update(String targetMigration,Boolean force)
在System.Data.Entity.Migrations.UpdateDatabaseCommand。  c__DisplayClass2。< .ctor> b__0()
在System.Data.Entity。 Migrations.MigrationsDomainCommand.Execute(Action命令)
程序集SMSApp中找到多个迁移配置类型。指定要使用的名称。

现在我担心如何解决它?

解决方案

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

 更新数据库-ConfigurationTypeName MyRenamedConfiguration 


I am developing a mvc 5 application using code first approach.

i am facing an issue . at first time when i try below comands , it worked and generate the table in that database. but when i changed some more classes and then tried with first 2 queries , it worked in that case but when i tried the third command, it gave this message to me.

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

see the first error:

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.

After that i executed the below command, it gave the below exception.

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.

NOw i am worry how to resolve it?

解决方案

You need to specify which configuration you want to use when updating the databases.

Update-Database -ConfigurationTypeName MyRenamedConfiguration

这篇关于在程序集“SMSApp”中找到了多个迁移配置类型。指定要使用的名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆