获取产品和类别的 ViewModel

时间:2021-04-16 15:00:41

标签: c# asp.net-mvc entity-framework linq-to-entities

我正在开发一个电子商务网站,我使用三个表来管理产品和类别。

我需要一个或多个带有实体框架的 linq 查询来获取母分类列表、子分类列表和相关产品列表。

有一个类别表,例如:

身份证 名字猫 父 ID

有一个产品表,例如:

身份证 名称 居住 信息等

有一个产品类别表,例如:

身份证 类别标识 产品编号 排序顺序

这是我的视图模型

public class CatViewModel
    {
        public int IdCat { get; set; }
        public string NameCat { get; set; }
        public int ParentId { get; set; }
        public List<CatViewModel> Children { get; set; }
        public List<Product> Products { get; set; }

    }

很明显,每个父类都必须有其所有子类的完整产品列表

2 个答案:

答案 0 :(得分:0)

您走在正确的轨道上。在应该使用此 CatViewModel 返回视图的方法中,您可以执行以下操作:

var mainObject = Context.Category.FirstOrDefault(x => x.IdCat == "YOUR PARAMETER OF ID HERE");
var viewModel = new CatViewModel
{
   IdCat = mainObject.IdCat,
   NameCat = mainObject.NameCat,
   ParentId = mainObject.ParentId,
   Children = Context.Children(query here).ToList(),
   Products = Context.Products(query here).ToList()
};

解决方案 2:

您可以先创建:

var listChildern = Context.Children(query here).ToList();
var listProducts = Context.Products(query here).ToList();

然后返回您填充的视图模型,如下所示:

var mainObject = Context.Category.FirstOrDefault(x => x.IdCat == "YOUR PARAMETER OF ID HERE");
var viewModel = new CatViewModel
{
   IdCat = mainObject.IdCat,
   NameCat = mainObject.NameCat,
   ParentId = mainObject.ParentId,
   Children = listChildern ,
   Products = listProducts 
};

答案 1 :(得分:0)

我有三张桌子。 我需要一个 CatViewModel 列表类型模型,我试过了:

var cats = db.Cats.AsEnumerable() // <-- Force full execution (loading) of the above 
.Where(e => e.ParentId == null) // <-- then apply the root filter 
.ToList(); 

var myList = cats.Select(c => new CatViewModel {
 IdCat = c.IdCat, 
NameCat = c.Nomecat, 
Children = c.Children, 
Products = ??? 
}).ToList();
相关问题