ASP.NET Core Web API 多对多关系实战:POCO、Join Entity 与导航属性全解析
作者:xiaoxin.gao · 2025-06-27 · 阅读时间:3分钟
ASP.NET Core 多对多关系
EF Core Join 表 实践
EF Core 导航属性 ICollection 用法
PokemonOwner PokemonCategory Join Entity
UML 类图 多对多 可视化
Web API N:N 关联
引言:什么是多对多关系? 多对多关系(N\:N)指的是两个实体之间可以互相关联多条记录,如学生与课程、Poke […]
文章目录
引言:什么是多对多关系?
多对多关系(N\:N)指的是两个实体之间可以互相关联多条记录,如学生与课程、Pokemon 与 Owner 互为多对多。实现此关系需借助Join 实体(关联表),本文基于 Pokémon 示例详解实现过程。
一、在 UML 图中识别 N\:N 关系

- 打开 UML 类图,寻找两个实体之间都标记为 “*”(Many)的关联。
- 如示例图中:
Pokemon──Owner与Pokemon──Category,都需通过中间表实现。
二、创建 Join 表实体(关联表)

-
在
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; } } -
同理创建
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 表同时持有两个外键和对应导航属性,用于存储多对多关系。
三、在实体中添加集合导航属性(“一”端)
-
Pokemon 类新增:
public ICollection < PokemonOwner > PokemonOwners { get; set; } public ICollection < PokemonCategory > PokemonCategories { get; set; } -
Owner 类新增:
public ICollection < PokemonOwner > PokemonOwners { get; set; } -
Category 类新增:
public ICollection < PokemonCategory > PokemonCategories { get; set; }通过集合导航属性,EF Core 可识别并查询关联数据。
四、在 Join 实体中反向添加导航属性(“多”端)

- PokemonOwner 与 PokemonCategory 已在定义时包含双向导航,便于从关联表访问双方实体。
- 确保所有外键字段类型与主实体主键一致,避免类型不匹配。
五、验证模型完整性与调试小技巧
- 手动检查各实体及 Join 实体中的数据类型和属性名称,避免拼写或类型错误。
- 在 VS Code 中,使用右键 Go to Definition 快速跳转查看实体定义,提升开发效率。
小结与下一步
- 多对多关系 通过显式创建Join 实体来保存关联,集合导航属性可让 EF Core 自动识别。
- 确保在主实体和 Join 实体中正确添加外键与导航属性。
- 下一章将演示如何在 DbContext 中配置 Fluent API,自动维护中间表,并实现多对多数据的增删查改。
通过本篇,您已掌握手动构建 N\:N 关系的核心步骤,为更复杂的数据模型打下坚实基础。
原文引自YouTube视频:https://www.youtube.com/watch?v=oOUSvRc3FMo
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册
3000+提示词助力AI大模型
和专业工程师共享工作效率翻倍的秘密
最新文章
- OWASP API十大漏洞及DAST如何保护您 …
- API安全在物联网(IoT)中的关键作用
- Java后端API接口开发规范
- PyJWT:轻松搞定Token认证,让你的API更安全!
- 2025年7月GitHub 上热门的10大API开源项目
- 构建远程医疗应用的10个最佳Telehealth API选项
- 使用 FastAPI、Docker 和 Hugging Face Transformers 的文本分类 API
- IdeaGitLab 插件API Token is not valid解决方案
- API架构设计基础
- 什么是GPT-4?完整指南
- 最佳API测试工具:REST和SOAP自动化 – Parasoft
- 如何使用Ollama(完整Ollama速查表)- Apidog