2012-02-14 66 views
2

使用实体框架。 带树层次结构的简单页面类。包含自身为ICollection的实体

public class Page 
{ 
    public int Id { get; set; } 
    //... 
    public int ParentId { get; set; } //removing this solves the problem, but I would like to keep this line 
    public virtual Page Parent { get; set; } 
    public virtual ICollection<Page> SubPages { get; set; } 
} 

抛出当我尝试添加一个对象,并调用SaveChanges错误:

无法确定“Models.Page_Parent”关系的主要终点。多个添加的实体可能具有相同的主键。

我大致了解问题,但不知道如何解决它。

回答

1

使ParentId属性可以为空。根元素不会有父项。使用@ Jayantha的答案中所示的流畅配置。

public class Page 
{ 
    public int Id { get; set; } 
    //... 
    public int? ParentId { get; set; } like to keep this line 
    public virtual Page Parent { get; set; } 
    public virtual ICollection<Page> SubPages { get; set; } 
} 
1

您是否尝试过定义关系?

this.HasRequired(page => t.Parent).WithMany(t => t.SubPages).HasForeignKey(d => d.ParentId); 
+0

没有帮助 – Wonder 2012-02-14 08:20:53