获取产品和类别的 ViewModel

Posted

技术标签:

【中文标题】获取产品和类别的 ViewModel【英文标题】:Get ViewModel for products and categories 【发布时间】:2021-07-11 14:54:50 【问题描述】:

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

我需要一个或多个带有实体框架的 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; 

    

显然每个父类别必须有其所有子类别的完整产品列表

【问题讨论】:

【参考方案1】:

你在正确的轨道上。在应该使用此 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 
;

【讨论】:

我有三张桌子。我需要一个 CatViewModel 列表类型模型,我试过这个: var cats = db.Cats.AsEnumerable() // e.ParentId == null) / / new CatViewModel IdCat = c.IdCat, NameCat = c.Nomecat_it, Children = c.Children, Products = ??? ).ToList();【参考方案2】:

我有三张桌子。 我需要一个 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();

【讨论】:

以上是关于获取产品和类别的 ViewModel的主要内容,如果未能解决你的问题,请参考以下文章

如何获取供应商产品所属的所有产品类别

CakePHP 我将如何获取类别明智的产品?

获取类别和子类别的所有产品(rails,awesome_nested_set)

获取 WooCommerce 中的所有产品类别

如何在 Laravel 中明智地获取产品类别?

使用 WooCommerce 在简码中按产品类别获取产品