EF - "Update-Database", вызывающая последовательность содержит более одного элемента

Я только что закончил модифицировать свои модели, запустил "Update-Database" в консоли диспетчера пакетов и BOOM! Я получил ошибку "Последовательность содержит более одного элемента". После сканирования через консоль он сказал No pending explicit migrations. что явно неправильно, так как я переименовал некоторые модели. Я также нашел SingleOrDefault позвони, я не знаю, откуда это. Я закомментировал мой метод семян, так что это не вызывает его

    No pending explicit migrations.
System.InvalidOperationException: Sequence contains more than one element
   at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source)
   at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.<>c__DisplayClass280.<IndexesEqual>b__27d(String c)
   at System.Linq.Enumerable.<>c__DisplayClass7_0`3.<CombineSelectors>b__0(TSource x)
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Linq.Enumerable.SequenceEqual[TSource](IEnumerable`1 first, IEnumerable`1 second, IEqualityComparer`1 comparer)
   at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.IndexesEqual(ConsolidatedIndex consolidatedIndex1, ConsolidatedIndex consolidatedIndex2, ICollection`1 renamedColumns)
   at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.<>c__DisplayClass271.<FindAddedIndexes>b__26d(ConsolidatedIndex i1, ConsolidatedIndex i2)
   at System.Data.Entity.Utilities.DynamicEqualityComparer`1.Equals(T x, T y)
   at System.Linq.Set`1.Find(TElement value, Boolean add)
   at System.Linq.Enumerable.<ExceptIterator>d__72`1.MoveNext()
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(ModelMetadata source, ModelMetadata target, Lazy`1 modificationCommandTreeGenerator, MigrationSqlGenerator migrationSqlGenerator, String sourceModelVersion, String targetModelVersion)
   at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(XDocument sourceModel, XDocument targetModel, Lazy`1 modificationCommandTreeGenerator, MigrationSqlGenerator migrationSqlGenerator, String sourceModelVersion, String targetModelVersion)
   at System.Data.Entity.Migrations.DbMigrator.IsModelOutOfDate(XDocument model, 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.<Update>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.<.ctor>b__0()
   at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
Sequence contains more than one element

РЕДАКТИРОВАТЬ После некоторого копания, обнаружил, что ошибка возникает, когда EF запрашивает таблицу _MigrationHistory. но не стоит ли ожидать записи, поскольку я хочу обновить схему?

Кроме того, влияет ли перемещение моделей в другой проект?

ВНОВЬ РЕДАКТИРОВАТЬ Мне надоело искать причину проблемы, поэтому я быстро обошел ее

  1. Создайте скрипт резервного копирования данных
  2. Удалить текущую базу данных
  3. запустил Add-Migration и Update-Database в консоли
  4. Соответственно переименовал имена таблиц в скрипте резервного копирования
  5. Запустил скрипт

Теперь все работает нормально. Просто нужно выяснить, почему загрузка оооочень медленно

1 ответ

Обычно это происходит со мной, когда в моей базе данных есть дубликаты, соответствующие одному и тому же объекту.

Удаление дубликатов заставляет его работать. Если у вас есть сценарий данных, проверьте и подтвердите наличие дублирующих записей в объектах, которые вы пытались обновить в сценарии миграции.

Другие вопросы по тегам