首页 > 解决方案 > 没有显式映射的 EF Core 5.0 多对多关系 - 如何连接两个表?

问题描述

如您所知,在 EF Core 5.0 中,您无需显式映射表即可建立关系。问题是:既然你没有映射类了,你怎么能真正加入/过滤它们?

以截图为例:

public class Product
{
    ...
    public IList<Category> Categories {get;set;}
}

public class Category
{
    ...
    public IList<Product> Products {get;set;}
}

EF 5.0 中的此代码(正确地)使用数据库中的正确 FK 自动生成名为 ProductCategory 的映射表,将 ProductId 和 CategoryId 链接在一起。此表映射在源代码中没有等效类。

现在我的问题是,如何在代码中没有映射类的情况下过滤这两个表的值?例如,如何表示以下假设查询:

选择所有产品 加入类别 [如何链接它们?] 产品可用且类别属于电子产品

提前致谢。

标签: c#entity-framework-coreef-core-5.0

解决方案


我希望我的心灵感应足够好。

var query = 
   from p in ctx.Products
   where p.Categories.Any(c => c.Name == "Electorics")
   select p;

推荐阅读