2011-06-14 78 views
5

我試圖映射使用EF代碼第一次映射子項實體框架代碼優先

public class Category 
{ 
    public int ID { get; set; } 
    public int ParentID { get; set; } 

    public string Name { get; set; } 

    public Category ParentCategory { get; set; } 
    public List<Category> ChildCategories { get; set; } 
} 

我沿着線得到的東西相當「標準」的分類模型:

modelBuilder.Entity<Category>() 
    .HasOptional(t => t.ParentCategory) 
    .WithMany() 
    .HasForeignKey(t => t.ParentCategoryID) 
    .WillCascadeOnDelete(); 

但這似乎沒有照顧ChildCategories?

我錯過了什麼嗎?

爲了避免重複問題的說法,我也跟着以下,但並沒有完全回答我的具體查詢:

Code First Mapping for Entity Framework Hierarchy

Entity Framework CTP5 Code-First Mapping - Foreign Key in same table

+0

你是什麼意思「但這似乎沒有照顧ChildCategories ??」 – 2011-06-14 23:32:48

回答

3

更改你的實體來

public class Category 
{ 
    public int ID { get; set; } 
    public int? ParentID { get; set; } 

    public string Name { get; set; } 

    public virtual Category ParentCategory { get; set; } 
    public virtual IList<Category> ChildCategories { get; set; } 
} 

使ParentID可以爲空,並允許ChildCategories被延遲加載,使其虛擬。