diff --git a/LittleShop/Services/ProductService.cs b/LittleShop/Services/ProductService.cs index 8f9df64..93de65d 100644 --- a/LittleShop/Services/ProductService.cs +++ b/LittleShop/Services/ProductService.cs @@ -27,22 +27,26 @@ public class ProductService : IProductService Console.WriteLine($"[DEBUG] Loaded {products.Count} products"); - // Manually load variants for all products - var productIds = products.Select(p => p.Id).ToList(); - Console.WriteLine($"[DEBUG] Product IDs: {string.Join(", ", productIds.Select(id => id.ToString()))}"); - + // Manually load variants - using fresh query context to avoid Contains() json_each bug in EF Core 9 + SQLite + // Load ALL active variants first, then filter in memory var allVariants = await _context.ProductVariants - .Where(v => productIds.Contains(v.ProductId)) + .Where(v => v.IsActive) .ToListAsync(); Console.WriteLine($"[DEBUG] Loaded {allVariants.Count} total variants from database"); - foreach (var v in allVariants.Take(5)) + + // Filter to only variants that belong to loaded products + var productIds = products.Select(p => p.Id).ToHashSet(); + var matchingVariants = allVariants.Where(v => productIds.Contains(v.ProductId)).ToList(); + + Console.WriteLine($"[DEBUG] Filtered to {matchingVariants.Count} variants matching {productIds.Count} products"); + foreach (var v in matchingVariants.Take(5)) { Console.WriteLine($"[DEBUG] - Variant: {v.Id}, ProductId: {v.ProductId}, Type: {v.VariantType}, Name: {v.Name}"); } // Group variants by ProductId for quick lookup - var variantsByProduct = allVariants.GroupBy(v => v.ProductId) + var variantsByProduct = matchingVariants.GroupBy(v => v.ProductId) .ToDictionary(g => g.Key, g => g.ToList()); Console.WriteLine($"[DEBUG] Grouped variants into {variantsByProduct.Count} product groups"); @@ -110,14 +114,18 @@ public class ProductService : IProductService .Where(p => p.IsActive && p.CategoryId == categoryId) .ToListAsync(); - // Manually load variants for all products - var productIds = products.Select(p => p.Id).ToList(); + // Manually load variants - using fresh query context to avoid Contains() json_each bug in EF Core 9 + SQLite + // Load ALL active variants first, then filter in memory var allVariants = await _context.ProductVariants - .Where(v => productIds.Contains(v.ProductId)) + .Where(v => v.IsActive) .ToListAsync(); + // Filter to only variants that belong to loaded products + var productIds = products.Select(p => p.Id).ToHashSet(); + var matchingVariants = allVariants.Where(v => productIds.Contains(v.ProductId)).ToList(); + // Group variants by ProductId for quick lookup - var variantsByProduct = allVariants.GroupBy(v => v.ProductId) + var variantsByProduct = matchingVariants.GroupBy(v => v.ProductId) .ToDictionary(g => g.Key, g => g.ToList()); return products.Select(p => new ProductDto