我使用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
属性也是自引用的,因为Property
和Property
都继承Block
并且我正在使用table-per - 层次结构继承。
它一直在工作,并且处于具有实时数据的生产系统中。现在我想向基类添加一个字段(只是一个标准的BaseProperty
属性),我得到一个&#34;序列不包含任何元素&#34;添加迁移时出错。
我在https://entityframework.codeplex.com/workitem/569找到了未解决的问题,所以 我尝试了所描述的解决方法并删除了自引用键和导航属性,但迁移失败并出现相同的错误。我现在看起来完全被串起来......
答案 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.