所有文章 > API使用场景 > ASP.NET Core Web API 多对多关系实战:POCO、Join Entity 与导航属性全解析
ASP.NET Core Web API 多对多关系实战:POCO、Join Entity 与导航属性全解析

ASP.NET Core Web API 多对多关系实战:POCO、Join Entity 与导航属性全解析

引言:什么是多对多关系?

多对多关系(N\:N)指的是两个实体之间可以互相关联多条记录,如学生与课程、Pokemon 与 Owner 互为多对多。实现此关系需借助Join 实体(关联表),本文基于 Pokémon 示例详解实现过程。


一、在 UML 图中识别 N\:N 关系

  1. 打开 UML 类图,寻找两个实体之间都标记为 “*”(Many)的关联。
  2. 如示例图中:Pokemon ── OwnerPokemon ── Category,都需通过中间表实现。

二、创建 Join 表实体(关联表)

  1. Models 内新增 PokemonOwner.cs

    public class PokemonOwner
    {
       public int PokemonId { get; set; }
       public Pokemon Pokemon { get; set; }
    
       public int OwnerId { get; set; }
       public Owner Owner { get; set; }
    }
  2. 同理创建 PokemonCategory.cs

    public class PokemonCategory
    {
       public int PokemonId { get; set; }
       public Pokemon Pokemon { get; set; }
    
       public int CategoryId { get; set; }
       public Category Category { get; set; }
    }

    Join 表同时持有两个外键和对应导航属性,用于存储多对多关系。


三、在实体中添加集合导航属性(“一”端)

  1. Pokemon 类新增:

    public ICollection < PokemonOwner >   PokemonOwners   { get; set; }
    public ICollection < PokemonCategory > PokemonCategories { get; set; }
  2. Owner 类新增:

    public ICollection < PokemonOwner > PokemonOwners { get; set; }
  3. Category 类新增:

    public ICollection < PokemonCategory > PokemonCategories { get; set; }

    通过集合导航属性,EF Core 可识别并查询关联数据。


四、在 Join 实体中反向添加导航属性(“多”端)

  1. PokemonOwnerPokemonCategory 已在定义时包含双向导航,便于从关联表访问双方实体。
  2. 确保所有外键字段类型与主实体主键一致,避免类型不匹配。

五、验证模型完整性与调试小技巧

  1. 手动检查各实体及 Join 实体中的数据类型和属性名称,避免拼写或类型错误。
  2. 在 VS Code 中,使用右键 Go to Definition 快速跳转查看实体定义,提升开发效率。

小结与下一步

  • 多对多关系 通过显式创建Join 实体来保存关联,集合导航属性可让 EF Core 自动识别。
  • 确保在主实体和 Join 实体中正确添加外键与导航属性。
  • 下一章将演示如何在 DbContext 中配置 Fluent API,自动维护中间表,并实现多对多数据的增删查改。

通过本篇,您已掌握手动构建 N\:N 关系的核心步骤,为更复杂的数据模型打下坚实基础。

原文引自YouTube视频:https://www.youtube.com/watch?v=oOUSvRc3FMo

#你可能也喜欢这些API文章!

我们有何不同?

API服务商零注册

多API并行试用

数据驱动选型,提升决策效率

查看全部API→
🔥

热门场景实测,选对API

#AI文本生成大模型API

对比大模型API的内容创意新颖性、情感共鸣力、商业转化潜力

25个渠道
一键对比试用API 限时免费

#AI深度推理大模型API

对比大模型API的逻辑推理准确性、分析深度、可视化建议合理性

10个渠道
一键对比试用API 限时免费