使用Entity Framework Code First映射相同类的子项

Ale*_*lex 5 c# entity-framework-4 ef-code-first

我正在尝试使用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; }
}
Run Code Online (Sandbox Code Playgroud)

我有一些东西:

modelBuilder.Entity<Category>()
    .HasOptional(t => t.ParentCategory)
    .WithMany()
    .HasForeignKey(t => t.ParentCategoryID)
    .WillCascadeOnDelete();
Run Code Online (Sandbox Code Playgroud)

但这似乎没有照顾ChildCategories ??

我错过了什么吗?

为了避免重复的问题参数,我遵循以下内容,但是没有完全回答我的具体查询:

实体框架层次结构的代码优先映射

实体框架CTP5代码优先映射 - 同一表中的外键

Era*_*nga 3

将您的实体更改为

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; }
}
Run Code Online (Sandbox Code Playgroud)

使其ParentID可为空并允许ChildCategories延迟加载,使其成为虚拟的。