Как правильно апдейтить "вложенные" сущности
У меня есть сущность 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 родителя, но не коллекцию вложенностей, поэтому структура получается плоская, а не древовидная.