[英]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.