2016-06-30 25 views
-1

我使用.NET MVC和实体框架开发了一个项目。它工作正常。我已格式化笔记本电脑,已重新安装Visual Studio,我试图启用迁移和更新数据库。我收到以下错误.NET - 启用迁移和更新数据库

PM> update-database -ConfigurationType MessageBoard.Data.MessageBoardContext 
Specify the '-Verbose' flag to view the SQL statements being applied to the target database. 
The type 'MessageBoard.Data.MessageBoardContext' does not inherit from 'System.Data.Entity.Migrations.DbMigrationsConfiguration'. Migrations configuration types must extend from 'System.Data.Entity.Migrations.DbMigrationsConfiguration'. 

我检查了以下内容,看起来不错。我不知道为什么会出现上述错误。

  1. 实体框架安装,它是提供给解/ 项目

  2. 正确的连接字符串在Web.config文件中提供

  3. 我可以启用迁移和获取错误,同时更新 数据库

  4. 我可以成功启用代码迁移和更新数据库的一个其他解决方案并且不能为早期工作正常的解决方案启用。项目文章没有改变。

我已经探索了现有的链接,并尝试过这些选项。我无法想出一个办法

的错误信息是相同的,如果我与-verbose标志运行,详情如下

PM> update-database -verbose -ConfigurationType MessageBoard.Data.MessageBoardContext 
Using StartUp project 'MessageBoard'. 
Using NuGet project 'MessageBoard'. 
Specify the '-Verbose' flag to view the SQL statements being applied to the target database. 
System.Data.Entity.Migrations.Infrastructure.MigrationsException: The type 'MessageBoard.Data.MessageBoardContext' does not inherit from 'System.Data.Entity.Migrations.DbMigrationsConfiguration'. Migrations configuration types must extend from 'System.Data.Entity.Migrations.DbMigrationsConfiguration'. 
    at System.Data.Entity.Utilities.TypeExtensions.CreateInstance[T](Type type, Func`3 typeMessageFactory, Func`2 exceptionFactory) 
    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) 
The type 'MessageBoard.Data.MessageBoardContext' does not inherit from 'System.Data.Entity.Migrations.DbMigrationsConfiguration'. Migrations configuration types must extend from 'System.Data.Entity.Migrations.DbMigrationsConfiguration'. 
+0

有你这样的错误信息提示与冗长的标志运行之前?如果是这样,发布输出可能会有所帮助 – LDJ

+0

我添加了错误信息,详细标记 –

+0

您可以验证MessageBoard.Data.MessageBoardContext继承System.Data.Entity.Migrations.DbMigrationsConfiguration吗? – lokusking

回答

0

给您使用了错误的参数在上下文中指出。 -ConfigurationType期望迁移配置,而不是上下文。

更改项目包管理器控制台下拉到一个与运行迁移update-database

https://coding.abel.nu/2012/03/ef-migrations-command-reference/

+0

谢谢。我已经尝试了这个命令,它提供了下面的错误PM> update-database -ContextTypeName MessageBoard.Data.MessageBoardContext Update-Database:找不到与参数名'ContextTypeName'匹配的参数。 在行:1字符:33 +更新数据库-ContextTypeName <<<< MessageBoard.Data.MessageBoardContext + CategoryInfo:InvalidArgument:(:) [更新数据库内数据],ParameterBindingException + FullyQualifiedErrorId:NamedParameterNotFound,更新数据库内数据 –

+0

请参阅编辑。只要您更改项目,您应该只能运行常规更新数据库。 –

+0

非常感谢。但它不适用于该项目,它正在为其他具有相同安装的项目工作。 –