繁体   English   中英

使用实体框架在 ASP.NET MVC 3 中自引用 model

[英]Self referencing model in ASP.NET MVC 3 using Entity Framework

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

当我使用 Entity Framework 使用 dbContext 检索数据时,未加载父关系。 我 go 怎么实现呢? 这是class

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 的类别 class。

谁能告诉我如何更改 db.Category.ToList() 方法以便它同时加入父子关系? 谢谢

像这样尝试

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);
  }
public class Category
{

    public Guid Id { get; set; }
    public string Nom { get; set; }
    public string Description { get; set; }
    public ICollection<Category> SubCategory { get; set; } = new List<Category>();
    [JsonIgnore]
    public Category Parent { get; set; }
    public Guid? ParentId { get; set; }

}

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

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM