实体框架迁移错误 - 序列不包含任何元素(Entity Framework Migrations E

2019-07-31 17:38发布

命令:add迁移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

Answer 1:

看起来像一个bug。 你介意在其归档http://entityframework.codeplex.com/workitem/list/advanced与细节允许重现该问题?



Answer 2:

发生在我这个问题时,试图定义一个列的类型和大小DataAnnotations

坏:

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

好:

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


Answer 3:

是什么造成了这个问题对我来说是一起改变与实体相关联的关系, 改变了名称

所以,我在我的情况下,分辨率为:

  • 更改名称回旧
  • 添加迁移(当时是能够做到这一点)
  • 更新数据库
  • 更改实体的名称,并产生新的迁移

可以有这个问题很多其他可能的原因,虽然 - 例如,它应用后除去迁移。 不幸的是,他们没有这个错误是有意义的。



Answer 4:

我遇到了同样的问题,我发现这个问题: 移民:“序列不包含任何元素”模型PK改名后财产时有所不同自引用没有FK财产(独立协会)的关系这是我坚持的局面。 这是一个错误 ,但有通过我认为这是一个很好的解决用户提出了一个解决办法:

“我的表是自参照,下降外键列,然后添加一个固定的迁移问题,让房地产的重命名

步骤来解决,如果它可以帮助:

  1. 删除(点评)自参考外键和脚手架迁移,更新,数据库
  2. 重命名问题列,脚手另一个迁移,更新,数据库
  3. 取消注释自参考外键和脚手架迁移,更新,数据库
  4. 删除代码(但离开迁移)由步骤1和步骤3中产生的

测试修复:

  1. 更新数据库,目标之前步骤#1迁移
  2. 更新数据库到最近的迁移,并确保它不会失败。”


Answer 5:

这发生在我身上时,我做了一个小型的web项目。

该网站的.csproj的加载失败一次和Visual Studio决定默认项目更改为随机一个做负载。

因为在新的默认项目的app.config不包含任何的ConnectionStrings ... EF找不到任何地方进行更新。

更改我的默认的项目回到我的web项目,右击该项目,并选择设为启动项目,解决了这个对我来说。

但我想这里的问题是,EF一直在寻找的默认配置第一个连接字符串和可用串的数量为0。



Answer 6:

我用流利的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)");


Answer 7:

我也遇到了这个,因为我试图运行具有类缺少公共访问修饰符迁移。

有一次,我添加了这个 - 已解决错误。



文章来源: Entity Framework Migrations Error - Sequence contains no elements