我已经阅读了许多自我引用的文章,但没有看到我需要的特定情况。如果我错过了,请发链接。
这是我的情况。我有两个表。Feature包含Epic的集合,而Epic可以递归地包含子Epic的集合(我可以拥有子子子(n)史诗集合)。
以下是我要创建的模型类型的简单概述。
public class Feature
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Epic> Epics { get; set; }
}
public class Epic
{
public int Id { get; set; }
public string Name { get; set; }
public int FeatureId { get; set; }
public int ParentEpicId { get; set; }
public virtual ICollection<Epic> ChildEpics { get; set; }
}
我几乎可以在modelBuilder中指定关系,但有一件事情卡住了我。第一个epics集合将具有一个FeatureId FK,指向父Feature且ParentEpicId为空,但是所有下面的epic集合都将FeatureId设置为null,ParentEpicId设置为父epic的Id。(FeatureId可以指向epic子树的顶层feature,但这不是必需的)
如何在EF code first中指定此类型的关系?
如果我没有表达清楚或您需要更多信息,请告诉我。