数据库表:
我尝试了这种方法将类别表映射到EF核心:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Category>(entity =>
{
entity
.HasMany(e => e.Children)
.WithOne(e => e.Parent)
.HasForeignKey(e => e.ParentId);
});
}
Run Code Online (Sandbox Code Playgroud)
实体:
[Table("Category"]
public class Category : EntityBase
{
[DataType(DataType.Text), MaxLength(50)]
public string Name { get; set; }
public int? ParentId { get; set; }
public int? Order { get; set; }
[ForeignKey("ParentId")]
public virtual Category Parent { get; set; }
public virtual ICollection<Category> Children { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后在存储库中:
public override IEnumerable<Category> GetAll()
{
IEnumerable<Category> …Run Code Online (Sandbox Code Playgroud) c# sql categories self-referencing-table entity-framework-core