基于实体框架的ASP.NET MVC 3自引用模型
我有一个category类,它可以引用自身(仅向上一级)作为父类别 当我使用Entity Framework使用dbContext检索数据时,不会加载父关系。我该如何实现这一目标? 这是上课时间基于实体框架的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
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);
}
你能把你的映射类放进去吗?