使用join和id选择实体框架

时间:2018-04-23 15:25:07

标签: entity-framework entity-framework-core

简单的问题,但到目前为止,谷歌没有运气。

我该怎么做:

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();

我在图片中收到此错误: enter image description here

ProductCategory上有一个CategoryID,但是它试图在集合上找到一个?

1 个答案:

答案 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();