实体框架本身引用 -> 父/子

bie*_*000 3 c# asp.net entity-framework asp.net-core

是否可以使用 EF Core 和 fluent api 设置父/子关系?

我有以下课程

public class Category 
{
   public int Id { get; set; }
   public int ParentId { get; set; }
   public string Name { get; set; }
   public ICollection<Category> SubCategories { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

因此,如果我创建具有如下结构的对象列表,则 EF 可能会使用适当的数字设置实体的 id 和 parentId?

  • 猫 1
    • 猫 2
      • 猫3
    • 四类
    • 五类

dev*_*ero 6

你可以只引用你自己的类

public class Category 
{
   public int Id { get; set; }
   public int? ParentId { get; set; }
   public Category Parent { get; set; }
   public string Name { get; set; }
   public ICollection<Category> SubCategories { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

您还可以使用 fluent api 进一步设置

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
  modelBuilder.Entity<Job>()
            .HasMany(j => j.SubCategories )
            .WithOne(j => j.Parent )
            .HasForeignKey(j => j.ParentId)
}
Run Code Online (Sandbox Code Playgroud)