首先将相同类别的子项与Entity Framework Code进行映射

问题描述

| 我正在尝试使用EF Code First映射一个相当“标准”的类别模型
public class Category
{
    public int ID { get; set; }
    public int ParentID { get; set; }

    public string Name { get; set; }

    public Category ParentCategory { get; set; }
    public List<Category> ChildCategories { get; set; }
}
我有一些类似的东西:
modelBuilder.Entity<Category>()
    .HasOptional(t => t.ParentCategory)
    .WithMany()
    .HasForeignKey(t => t.ParentCategoryID)
    .WillCascadeOnDelete();
但这似乎并不能解决ChildCategories? 我想念什么吗? 为了避免重复的问题参数,我遵循以下步骤,但是并没有完全回答我的特定查询: 实体框架层次结构的代码优先映射 实体框架CTP5代码优先映射-同一表中的外键     

解决方法

        将您的实体更改为
public class Category
{
    public int ID { get; set; }
    public int? ParentID { get; set; }

    public string Name { get; set; }

    public virtual Category ParentCategory { get; set; }
    public virtual IList<Category> ChildCategories { get; set; }
}
使
ParentID
可以为空,并允许
ChildCategories
延迟加载,使其为虚拟。