EF自我引用上一个和下一个项目

时间:2017-05-07 10:18:20

标签: entity-framework

我有一个WorkYear类,应该能够引用上一个或下一个工作年。

public class WorkYear
{
    public int Id { get; set; }
    public int? PrevId { get; set; }
    public virtual WorkYear Prev { get; set; }
    public int? NextId { get; set; }
    public virtual WorkYear Next { get; set; }

}

理念是创造了3个工作年A,B和C.

创建A。

A.prev = null
A.next = null

创建B后,当选择B.Prev = A时,A.next变为= B.

在创建C时,当选择C.Prev = B时,B.next变为= C.

只有模型中的Prev一切都适合EF。可以指定上一个。

创建迁移以使用Next扩展模型。 EF正在抗议:

Unable to determine the principal end of an association between the types 'Mapato.Models.WorkYear' and 'Mapato.Models.WorkYear'. 
The principal end of this association must be explicitly configured using either the relationship fluent API or data annotations.

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

在任何关系中,一端必须是主体,第二端必须是依赖或儿童。主要末端是首先插入的末端,可以在没有孩子的情况下存在。子是必须在委托人之后插入/更新的子,因为它与委托人有外键关联。

以下是给出类似问题的有趣答案之一。这可能会有所帮助!!

What does principal end of an association means in 1:1 relationship in Entity framework