简单的问题,但到目前为止,谷歌没有运气。
我该怎么做:
select * from Products
left join ProductCategory on Products.ProductCode = ProductCategory.ProductCode
where ProductCategory.CategoryID = 1
进入Entity Framework Core中的查询?
这就是我所拥有的并且不正确:
_context.Products
.Where(p => p.ProductCategory.CategoryID == CategoryID)
.ToList();
谢谢!
修改
当我添加Include
时:
_context.Products
.Include(p => p.ProductCategory)
.Where(p => p.ProductCategory.CategoryID == CategoryID)
.ToList();
ProductCategory上有一个CategoryID,但是它试图在集合上找到一个?
答案 0 :(得分:1)
您应该使用Include()
LINQ选项 - documentation。它用于加载相关数据。
我不熟悉您的类和属性的确切名称,因此将其视为伪代码,但它应如下所示:
_context.products.Include("Product_Categories")
.Where(p => p.product_category.category_id == category_id)
修改强>
如果你发布课程会更容易,这样我就能看到关系。
但我认为您的Product
课程列表中包含ProductCategory
,并且您希望获得具有特定类别的所有产品。扩展您已有的方法,您需要:
_context.products
.Include(p => p.product_category)
.Where(p => p.ProductCategory.Any(pc => pc.category_id == category_id))
.ToList();