基于实体框架的ASP.NET MVC 3自引用模型

基于实体框架的ASP.NET MVC 3自引用模型,asp.net,asp.net-mvc-3,entity-framework-4,model,self-reference,Asp.net,Asp.net Mvc 3,Entity Framework 4,Model,Self Reference,我有一个category类,它可以引用自身(仅向上一级)作为父类别 当我使用Entity Framework使用dbContext检索数据时,不会加载父关系。我该如何实现这一目标? 这是上课时间 public class Category { [Key] public int CategoryID { get; set; } [Display(Name="Category Name")] public string CategoryName { ge

我有一个category类,它可以引用自身(仅向上一级)作为父类别

当我使用Entity Framework使用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()方法,使其同时加入父子关系吗?谢谢,
ParentCategoryID
必须为空,因为根类别没有父类别,EF需要为其分配null

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

}
像这样试试

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

}
在你的课堂上

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
    modelBuilder.Entity<Category>().
      HasOptional(e => e.ParentCategory).
      WithMany().
      HasForeignKey(m => m.ParentCategoryID);
  }
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()。
has可选(e=>e.ParentCategory)。
WithMany()。
HasForeignKey(m=>m.ParentCategoryID);
}

你能把你的映射类放进去吗?