Как правильно апдейтить "вложенные" сущности

У меня есть сущность ItemCategories (в монго):

public class ItemCategory
{
   public Guid Id { get; set; }
   public string Name { get; set; }
   public Guid? ParentId { get; set; }
   public bool IsActive { get; set; }
}

Так вот при отключении одной из категории все дочерние должны тоже отключаться. Я сделал это следующим образом (код несущественно изменен):

public async Task ChangeActivityAsync(ItemCategory item, bool active)
{
    item.IsActive = active;

    var items = await Repository.GetListAsync(x => x.ParentId == id);

    foreach (var parent in items)
    {
        await ChangeActivityAsync(parent, active);
    }

    item = await Repository.UpdateAsync(item);
}

Минусы данного подхода - очень частое обращение к бд. Можно ли это сделать проще? Проблема так же в том, что ItemCategory содержит в себе только лишь Id родителя, но не коллекцию вложенностей, поэтому структура получается плоская, а не древовидная.


Ответы (0 шт):