Ответ 1
Похож на ошибку. Не возражаете ли вы отправить его на http://entityframework.codeplex.com/workitem/list/advanced с подробностями, позволяющими воспроизвести проблему?
команда: add-migration blahblah -verbose
ошибка: Последовательность не содержит элементов
Я сделал несколько вещей, прежде чем получить эту ошибку. Я внес изменения в мою первую кодовую модель, но пока не выполнил add-migration
. Затем я добавил модель EDMX для визуального воспроизведения идеи. Я понял, что модель EDMX возилась с моим кодом, поэтому я удалил ее. Я попытался запустить add-migration
и получил "Последовательность не содержит элементов". Я обновился до EF 5 и удалил старый пакет Migrations, кроме моих конфигураций. Затем я снова попробовал add-migration
, и я все еще получаю "Последовательность не содержит элементов". Ниже приведена остальная часть ошибки.
System.InvalidOperationException: Sequence contains no elements
at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source)
at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.GetQualifiedTableName(XDocument model, String entitySetName)
at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.<FindRenamedIndependentAssociationColumns>b__ba(<>f__AnonymousType16`2 <>h__TransparentIdentifieraa)
at System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSource x)
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at System.Linq.Enumerable.<ConcatIterator>d__71`1.MoveNext()
at System.Linq.Enumerable.<ConcatIterator>d__71`1.MoveNext()
at System.Linq.Enumerable.<DistinctIterator>d__81`1.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(XDocument sourceModel, XDocument targetModel, String connectionString)
at System.Data.Entity.Migrations.DbMigrator.Scaffold(String migrationName, String namespace, Boolean ignoreChanges)
at System.Data.Entity.Migrations.Design.MigrationScaffolder.Scaffold(String migrationName, Boolean ignoreChanges)
at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Scaffold(MigrationScaffolder scaffolder)
at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.RunCore()
at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
Sequence contains no elements
Похож на ошибку. Не возражаете ли вы отправить его на http://entityframework.codeplex.com/workitem/list/advanced с подробностями, позволяющими воспроизвести проблему?
Эта проблема возникает при попытке определить тип и размер столбца с DataAnnotations
.
ПЛОХО:
[Column(TypeName="VARCHAR(254)")]
public string ColumnName { get; set; }
OK:
[MaxLength(254)]
[Column(TypeName="VARCHAR")]
public string ColumnName { get; set; }
Что вызвало проблему для меня, было изменение имени вместе с изменением отношений, связанных с сущностью.
Итак, мое решение в моем случае было:
Могут быть потенциально много других причин этой проблемы, хотя - например, удаление миграции после ее применения. К сожалению, ни в одной из них эта ошибка не имеет смысла.
Я столкнулся с той же проблемой, Я нашел эту проблему: Миграции: "Последовательность не содержит элементов" в модели различаются после переименования свойства PK, когда отношения саморегуляции без свойства FK (независимая ассоциация) это ситуация, в которой я застрял. это ошибка, но обходной путь, предложенный пользователем, который, по моему мнению, является хорошим решением:
"Моя таблица была привязана к себе, удалив столбец внешнего ключа, а затем добавив миграцию, исправил проблему и разрешил переименование свойства
Шаги для исправления, если это помогает:
Тестирование исправления:
Это случилось со мной, когда я делал это для небольшого веб-проекта.
Не удалось загрузить веб-сайт .csproj, и визуальная студия решила изменить проект по умолчанию на случайную загрузку.
Так как app.config в новом проекте по умолчанию не содержал каких-либо connectionStrings... EF не смог найти нигде для обновления.
Изменив проект по умолчанию на мой веб-проект, щелкнув правой кнопкой мыши проект и выбрав "Сделать как запуск", решил это для меня.
Но я предполагаю, что проблема заключалась в том, что EF искал первую строку подключения в конфигурации по умолчанию, а количество доступных строк было 0.
Я получил эту ошибку при использовании Fluent API в OnModelCreating
как это:
modelBuilder.Entity<ApplicationUser>()
.Property(b => b.Id)
.HasColumnType("nvarchar(128)");
Поменял на это и тогда все заработало:
modelBuilder.Entity<ApplicationUser>()
.Property(b => b.Id)
.HasColumnType("nvarchar")
.HasMaxLength(128);
Обратите внимание, что использование nvarchar(MAX)
и аналогичных не является проблемой и не приведет к этой ошибке.
modelBuilder.Entity<ApplicationUser>()
.Property(b => b.PasswordHash)
.HasColumnType("nvarchar(MAX)");
Я также столкнулся с этим, потому что я пытался запустить миграцию с классом без модификатора публичного доступа.
Как только я добавил это - ошибка была решена.
Я столкнулся с той же проблемой, когда существует наследование между двумя объектами, и я хотел создать индекс для свойства одного из них. сообщается об ошибке по этому вопросу в версии 6.3.
Когда я удалил наследство или индекс, миграция была успешно создана. В качестве обходного пути вы можете создать индекс вручную.