Dot-Net

實體框架遷移錯誤 - 序列不包含任何元素

  • September 19, 2012

命令: add-migration blahblah -verbose

**錯誤:**序列不包含任何元素

在收到此錯誤之前,我做了一些事情。我對程式碼優先模型進行了更改,但尚未執行add-migration。然後我添加了一個 EDMX 模型來直覺地玩弄一個想法。我意識到 EDMX 模型弄亂了我的程式碼,所以我刪除了它。我試圖執行add-migration並得到“序列不包含任何元素”。我升級到 EF 5 並解除安裝了舊的遷移包,但我的配置除外。然後我又試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; }

好的:

[MaxLength(254)]
[Column(TypeName="VARCHAR")]
public string ColumnName { get; set; }

引用自:https://stackoverflow.com/questions/12500625