实体框架代码首次自动迁移失败v6.1.3

时间:2018-02-23 17:14:26

标签: asp.net-mvc entity-framework entity-framework-6 ef-migrations

我正在使用EF 6.1.3并将自动迁移设置为true。 到目前为止,它运作良好。最近发布的版本无法通过以下错误进行迁移。

[InvalidOperationException: Sequence contains more than one matching element]
   System.Linq.Enumerable.SingleOrDefault(IEnumerable`1 source, Func`2 predicate) +366
   System.Data.Entity.Migrations.Infrastructure.<>c__DisplayClass260.<FindAlteredColumns>b__257(<>f__AnonymousType2d`2 <>h__TransparentIdentifier252) +184
   System.Linq.WhereSelectEnumerableIterator`2.MoveNext() +232
   System.Linq.WhereSelectEnumerableIterator`2.MoveNext() +275
   System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +436
   System.Linq.Enumerable.ToList(IEnumerable`1 source) +69
   System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(ModelMetadata source, ModelMetadata target, Lazy`1 modificationCommandTreeGenerator, MigrationSqlGenerator migrationSqlGenerator, String sourceModelVersion, String targetModelVersion) +624
   System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(XDocument sourceModel, XDocument targetModel, Lazy`1 modificationCommandTreeGenerator, MigrationSqlGenerator migrationSqlGenerator, String sourceModelVersion, String targetModelVersion) +588
   System.Data.Entity.Migrations.DbMigrator.IsModelOutOfDate(XDocument model, DbMigration lastMigration) +72
   System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId) +338
   System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration) +609
   System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase) +580
   System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration) +116
   System.Data.Entity.MigrateDatabaseToLatestVersion`2.InitializeDatabase(TContext context) +154
   System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) +69
   System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization() +482
   System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input) +174
   System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action) +269
   System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +20
   System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() +77
   System.Data.Entity.Internal.Linq.InternalSet`1.Include(String path) +25
   System.Data.Entity.Infrastructure.DbQuery`1.Include(String path) +104
   System.Data.Entity.QueryableExtensions.Include(IQueryable`1 source, Expression`1 path) +209

当我尝试使用干净的数据库时,它会很好地创建它。没有问题。 我尝试评论种子方法并尝试仍然无法正常工作。

因此,这不是播种问题,它无法比较数据库更改并应用这些更改。

如何追踪根本原因并处理它?<​​/ p>

1 个答案:

答案 0 :(得分:0)

这是我解决它的方式。不是直截了当的,但可以视为一种解决方法。

  • 在web.config中更改数据库名称=&gt; DBNAME清洁
  • 运行网站(这将创建新数据库)
  • 使用SSDT,将dbname-clean中的模式与dbname-old进行比较并同步更改
  • 在dbname-old
  • 上截断_MigrationHistory
  • 从[dbname -
  • 插入[dbname-old] ._ MigrationHistory
  • 清洁] ._ MigrationHistory
  • 现在将web.config中的数据库名称更改为旧名称
  • 运行网站

网站加载:)