EF Code First属性到同一个表

时间:2015-12-10 17:13:26

标签: c# entity-framework ef-fluent-api

我是EF的新手并且正在努力实施以下方案。我有一个实体,我希望将导航属性发送给同一个实体的另一个实体。 E.g。

public class Stage {
    public int ID { get; set; }
    public int? NextStageID { get; set; }
    public string Name { get; set; }

    public virtual Stage NextStage { get; set;}
}

到目前为止,我发现的唯一例子是实体具有父/子关系,即导航属性是同一实体的ICollection。我尝试过调整这个但是无法在我的实例中使用它。此外,我只需要它是一种方式,即实体没有“前一阶段”。财产,只是一个' NextStage'一。我正在使用Fluent API进行配置。有人可以建议是否/如何实现这一目标?

我收到此错误:

  

无法确定类型与名称空间之间关联的主要结尾.Stage'和' namespace.Stage'。必须使用关系流畅API或数据注释

显式配置此关联的主要结尾

修改 刚刚在我的略微简化的例子中意识到,我没有表明NextStageID是可选的(int?)。

2 个答案:

答案 0 :(得分:9)

您可以按如下方式明确定义关系:

public class Stage {
    public int ID { get; set; }
    public int NextStageID { get; set; }
    public string Name { get; set; }

    [ForeignKey("NextStageID ")]
    public virtual Stage NextStage { get; set;}
}

答案 1 :(得分:0)

您需要添加parentId和Parent导航属性 和子导航属性,所以实体框架理解这是一个递归关系 检查此stack Overflow link

中的答案