我是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?)。
答案 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
中的答案