Hej, jeszcze do końca nie kumam LINQ, czy da się poniższe przypisanie własności VM napisać zwięźlej, czy lepiej po prostu wrzucić to w metodę repo i się nie przejmować? Kod działa, ale napisałem go trochę łopatologicznie.
public async Task<IActionResult> Edit(int? id)
{
if (id == null)
{
return NotFound();
}
var productDb = await _context.Products
.Include(i => i.CPs)
.ThenInclude(i => i.Client)
.AsNoTracking()
.SingleOrDefaultAsync(m => m.ProductID == id);
if (productDb == null)
{
return NotFound();
}
var productsClients = productDb.CPs.Select(c => c.ClientID); //pobranie z modelu join
//ładowanie VM
productVM.ProductID = productDb.ProductID;
productVM.Name = productDb.Name;
productVM.Description = productDb.Description;
productVM.Price = productDb.Price;
productVM.ClientIds = productsClients.ToArray(); //array Clinets z CPs
productVM.Clients = PopulateCliensList();
return View(productVM); //zwróć VM
}