迁移导致“序列不包含元素”错误

时间:2015-04-20 10:13:57

标签: entity-framework

我使用table-per-hierarchy继承创建了一个包含3个类的模型,并使用2个自引用层次结构表的外键创建了一个模型。

我有一个BaseProperty类,其中包含自引用键CloneID和导航属性Clone

public class BaseProperty
{
   public int ID {get; set; }

   public int? CloneID {get; set; }

   public BaseProperty Clone {get; set; }

   //If I add this code, when I use Add-Migration - 
   //Sequence contains no elements error
   //public int? TriggeredCloneID {get; set;}
}

我有一个继承Property的{​​{1}}类,并且有一个外键BaseProperty和一个BlockID导航属性。

Block

我有一个public class Property : BaseProperty { public int? BlockID { get; set; } public Block { get; set; } } 类,它继承Block并具有BaseProperty导航属性:

Properties

请注意,public class Block: BaseProperty { public ICollection<Property> Properties { get; set; } [DatabaseGenerated(DatabaseGeneratedOption.Computed)] public int? ComputedNumberOfProperties { get; set; } } 类中的Block属性也是自引用的,因为PropertyProperty都继承Block并且我正在使用table-per - 层次结构继承。

它一直在工作,并且处于具有实时数据的生产系统中。现在我想向基类添加一个字段(只是一个标准的BaseProperty属性),我得到一个&#34;序列不包含任何元素&#34;添加迁移时出错。

我在https://entityframework.codeplex.com/workitem/569找到了未解决的问题,所以 我尝试了所描述的解决方法并删除了自引用键和导航属性,但迁移失败并出现相同的错误。我现在看起来完全被串起来......

2 个答案:

答案 0 :(得分:1)

Block类中还有一个数据库计算字段。删除它(以及自引用属性)让我运行迁移。

答案 1 :(得分:0)

我也有这个问题,我尝试将类型从ComicImage更改为ComicMediaFile ...我不小心改变变量名称,所以我最终

List<ComicMediaFile> ComicImages; // and after I changed this variable name to ComicMediaFiles... it worked... I don't know why.