我的mysql表架构如下(续):
我只需要在使用efcore的查询中选择类别数据:
List<CategoryViewModel> viewModel = await _context.Category
.Join(_context.Product_Category, c => c.CategoryId, pc => pc.CategoryId, (c, pc) => new { c, pc })
.Join(_context.Product, cpc => cpc.pc.ProductId, p => p.ProductId, (cpc, p) => new { cpc, p })
.Where(cpcp => cpcp.p.EstablishmentId == paramEstablishmentId) //paramEstablishmentId comes via parameter
.Select(vm => new CategoryViewModel()
{
Id = vm.cpc.pc.category.CategortId,
Name = vm.cpc.pc.category.Name,
Image = vm.cpc.pc.category.ImagePath,
Description = vm.cpc.pc.category.Description
})
.ToListAsync();
但是这个查询总是得到一个里面没有模型的列表。我保证数据库中有要返回的值。
知道我做错了什么吗?
非常感谢!
2条答案
按热度按时间uelo1irk1#
基于@flyzxx answer(非常感谢,朋友),我将我的查询修改为:
基本上,我没有选择categories,而是选择product\u category并使用include来添加产品和类别,这样就可以使用where子句。
cl25kdpy2#
你应该使用
Include()
函数而不是联接。例如: