2012-02-14 37 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