运行代码第一次迁移update-database时出错

时间:2014-03-25 16:36:15

标签: c# entity-framework asp.net-web-api

我在迁移到数据库时出现问题,而且我似乎无法找到错误的答案

 System.MissingMethodException: Method not found: 'System.Data.Entity.Migrations.Builders.TableBuilder`1 System.Data.Entity.Migrations.Builders.TableBuilder`1.Index(System.Linq.Expressions.Expression`1>, Boolean, Boolean, System.Object)'.
   at Evento.Migrations.initialcreate.Up()
   at System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
   at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
   at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   at System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration)
   at System.Data.Entity.Migrations.DbMigrator.c__DisplayClassc.b__b()
   at System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   at System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
   at System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
   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.b__0()
   at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
Method not found: 'System.Data.Entity.Migrations.Builders.TableBuilder`1 System.Data.Entity.Migrations.Builders.TableBuilder`1.Index(System.Linq.Expressions.Expression`1>, Boolean, Boolean, System.Object)'. 

5 个答案:

答案 0 :(得分:14)

我遇到了同样的问题,这就是我如何解决它。我希望这有助于其他人。

  1. 我从参考文献中删除了Entity Framework,并从package.config文件中删除了这些行。
  2. 关闭Visual Studio并删除项目文件夹中的所有EntityFramework DLL文件
  3. 打开Visual Studio,然后执行Clean and Build
  4. 重新安装实体框架
  5. 再次清理并构建
  6. 之后,它正在运作。

答案 1 :(得分:2)

如果Entity Framework包含在引用的项目中,而不是在初始化迁移的项目中,则也会发生这种情况。 解决方案是在该项目中也包括EF。

答案 2 :(得分:1)

如果您使用EF 6.2.0针对新的dll运行旧版本的migrate.exe,则会发生这种情况

答案 3 :(得分:0)

如果您使用的是EF 6.1,则需要安装Visual Studio 2013的更新2

答案 4 :(得分:0)

运行db.Database.Initialize(true);时遇到此错误。我发现我的控制台应用程序引用了EF v 6.0,但是DataContext和ModelBuilder的项目是6.1.3。

将控制台应用程序设置为6.1.3以匹配其他应用程序后,错误消失。