0

我有一個類別類,它可以引用自己(只有一個級別)作爲父類別。使用實體框架在ASP.NET MVC 3中的自引用模型

當我使用實體框架使用dbContext檢索數據時,不加載父關係。我如何去實現這個目標? 這裏是類

public class Category 
{ 
    [Key] 
    public int CategoryID { get; set; }  
    [Display(Name="Category Name")] 
    public string CategoryName { get; set; } 

    public int ParentCategoryID { get; set; } 
    public virtual Category ParentCategory { get; set; } 

} 

當我檢索使用的DbContext所有類別中,ParentCategory爲null B/C它沒有加入到與相同ID的另一個類別類。

任何人都可以告訴我如何更改db.Category.ToList()方法,以便它也同時加入父子關係?謝謝

+0

你能不能把你的映射類? – IamStalker

回答

0

ParentCategoryID必須爲空,因爲根類別不會有父級,並且EF需要爲其分配空值。

public class Category 
{ 
    [Key] 
    public int CategoryID { get; set; }  
    [Display(Name="Category Name")] 
    public string CategoryName { get; set; } 

    public int? ParentCategoryID { get; set; } 
    public virtual Category ParentCategory { get; set; } 

} 
1

嘗試像這樣

public class Category 
{ 
    [Key] 
    public int CategoryID { get; set; }  

    [Display(Name="Category Name")] 
    public string CategoryName { get; set; } 

    public int? ParentCategoryID { get; set; } 
    public virtual Category ParentCategory { get; set; } 

} 

而在你的Context類,

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
    modelBuilder.Entity<Category>(). 
     HasOptional(e => e.ParentCategory). 
     WithMany(). 
     HasForeignKey(m => m.ParentCategoryID); 
    }