Как создать дерево и сохранить его в БД
Использую EF Core и возникла необходимость построить иерархию категорий в виде дерева. Как это сделать?
Идея в том, что бы это выглядело примерно так
-Категория1
--Подкатегория1
---Подкатегория подкатегории1
Ответы (1 шт):
Автор решения: Frehzy
→ Ссылка
А в чём возникает проблема?
Создаём базовый интерфейсIEntity:
public interface IEntity
{
public Guid Id { get; set; }
public DateTime CreatedTime { get; set; }
}
Реализуем этот интерфейс:
public abstract class BaseEntity : IEntity
{
[Key]
public Guid Id { get; set; } = Guid.NewGuid();
public DateTime CreatedTime { get; set; } = DateTime.Now;
public BaseEntity() { }
}
Создаём класс Category:
public class Category: BaseEntity
{
public Guid NewCategoryId { get; set; }
[JsonIgnore]
[ForeignKey(nameof(NewCategoryId))]
public virtual Category NewCategory { get; set; }
public Category() : base() { }
}
Создаём в DataContext DbSet:
public class DataContext : DbContext
{
public DbSet<Category> Categories { get; set; }
public DataContext(DbContextOptions<DataContext> options) : base(options)
{
}
}
UPD:
Предложение по улучшению @Aarnihauta:
public class Category: BaseEntity
{
[JsonIgnore]
[ForeignKey(nameof(Id))]
public virtual ICollection<Category> NewCategories { get; set; }
public Category() : base() { }
}