سلام استاد وقتتون بخیر
برای این کوئری چون فقط محصولات رو بر میگردونیم نیازی به include کردن نداریم در نتیجه کوئری مون رو میتونیم همون به شکل ساده بنویسیم و روی هر سطح دسته بندی کلیک کنیم Product های همون سطح و زیر مجموعه هاش رو بر میگردونه :
public async Task<IEnumerable<Product>> GetProductsBySlug(string slug)
{
return await _context.Products
.Where(p=>p.Category.Slug == slug
|| p.Category.Parent.Slug == slug
|| p.Category.Parent.Parent.Slug == slug)
.ToListAsync();
}فکر کنم این برای ما کافی باشه
ولی برای بیشتر شدن سرعت پیدا شدن محصولات برای وقتی که محصولاتمون بیشتر شد میتونم روی اسلاگ index گذاری کنیم و چون اسلاگ ها یونیک هستند میتونیم این خطو تو کانفیگوریشن اضافه کنیم:
builder.HasIndex(x=>x.Slug).IsUnique();