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); 
    }