Я создал 3 таблицы отношений (пользователи, проекты, продукты)
один пользователь имеет много проектов, а один проект имеет много продуктов (один ко многим)
Мне нужно показать все проекты и содержащиеся продукты при входе в систему пользователя
Я сделал это, используя следующий код, но я не думаю, что это лучший способ справиться с этим. Мне нужно сделать это лучше
public ActionResult Index()
{
ModulesViewModel mvm = new ModulesViewModel();
List<Modules> modules = new List<Modules>();
var userId = User.Identity.GetUserId();
var projects = _adsDbContext.Project.Where(x=>x.UserID == userId).ToList();
foreach (var pro in projects)
{
var productData = _adsDbContext.Product.Where(x => x.ProjectID == pro.ProjectID);
modules.AddRange(productData);
}
modules = modules.OrderBy(x => x.ProjectID).OrderBy(x=>x.ModuleNumber).ToList();
mvm.Modules = modules;
return View(mvm);
}
public class Project
{
public int ProjectID { get; set; }
public string Name { get; set; }
public virtual ICollection<ProductData> Products { get; set; }
public string UserID { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
}
public class ProductData : Modules
{
public int ProductDataID { get; set; }
public float ConversionRate { get; set; }
public float Price { get; set; }
public float TotalSales { get; set; }
public float GrossSales { get; set; }
public float NetProfit { get; set; }
public float ProfitPerLead { get; set; }
}
public abstract class Modules
{
public int ProjectID { get; set; }
public virtual Project Project { get; set; }
}
Это работает нормально, но мне нужно сделать это лучше, а не создавать отношения с нуля или сделать запрос лучше.