ASP.NET Core Web API 一对多关系详解:POCO、外键与实体映射
作者:xiaoxin.gao · 2025-06-27 · 阅读时间:4分钟
ASP.NET Core 一对多关系
EF Core 外键 映射
EF Core 导航属性 Collection 使用
Owner 与 Country 一对多示例
POCO 添加外键与导航属性
Web API 模型 关联
引言:什么是一对多关系? 在数据库设计中,一对多(1\:N)关系是最常见的关联类型:一个“主”实体可关联多条“ […]
引言:什么是一对多关系?
在数据库设计中,一对多(1\:N)关系是最常见的关联类型:一个“主”实体可关联多条“从”实体记录。核心是通过 外键(Foreign Key) 将表链接起来。
例如,Country
表中的一条记录(国家)可对应多个 Owner
(训练师),它们通过 CountryId
外键关联。
一、UML 类图可视化关系
使用 UML 类图帮助梳理实体与字段,并直观标注关系:
Pokemon 1 ──── * Review
Country 1 ──── * Owner
Reviewer 1 ──── * Review
1
端显示单一对象,*
端显示集合。- Many-to-many(N\:N)关系会额外通过中间表实现,本文下节再详解。
二、在实体中添加集合导航属性(“多”端)
1. Pokemon 与 Review
在 Models/Pokemon.cs
内添加:
public class Pokemon
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime BirthDate { get; set; }
// 一对多:一个 Pokemon 可有多条 Review
public ICollection < Review > Reviews { get; set; }
}
2. Country 与 Owner
在 Models/Country.cs
内添加:
public class Country
{
public int Id { get; set; }
public string Name { get; set; }
// 一对多:一个 Country 可有多名 Owner
public ICollection < Owner > Owners { get; set; }
}
3. Reviewer 与 Review
在 Models/Reviewer.cs
内添加:
public class Reviewer
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
// 一对多:一个 Reviewer 可写多条 Review
public ICollection < Review > Reviews { get; set; }
}
三、在实体中添加单对象导航属性(“一”端)
Owner 引用 Country
在 Models/Owner.cs
中添加外键与导航属性:
public class Owner
{
public int Id { get; set; }
public string Name { get; set; }
public string Gym { get; set; }
// 外键字段
public int CountryId { get; set; }
// 一对多:在 Owner 中持有单一 Country 对象
public Country Country { get; set; }
}
Review 引用 Reviewer 与 Pokemon
在 Models/Review.cs
中添加:
public class Review
{
public int Id { get; set; }
public string Title { get; set; }
public string Text { get; set; }
// 外键与导航属性
public int ReviewerId { get; set; }
public Reviewer Reviewer { get; set; }
public int PokemonId { get; set; }
public Pokemon Pokemon { get; set; }
}
小结与下一步
- 一对多关系 通过在“多”端实体中声明
ICollection < T >
导航属性,以及在“单”端实体中声明对应外键与单一导航属性来实现。 - 外键字段(如
CountryId
、ReviewerId
)既用于数据库约束,也让 EF Core 正确映射关联。 - 下节将演示 多对多(N\:N)关系,包括中间表(Join Entity)的配置方法。
原文引自YouTube视频:https://www.youtube.com/watch?v=DWi-VHElmRE
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册
3000+提示词助力AI大模型
和专业工程师共享工作效率翻倍的秘密
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- Python调用免费翻译API实现Excel文件批量翻译
- 为开源项目 go-gin-api 增加 WebSocket 模块
- AI编程的风险,如何毁掉你的 API?
- 使用预约调度API的运输管理
- Claude 免费用户频繁被限流?实用应对策略推荐
- 如何获取谷歌新闻 API Key 密钥(分步指南)
- API 目录 – 什么是 API 目录?
- 用NestJS和Prisma: Authentication构建一个REST API
- DeepSeek – Anakin.ai 的 Reason 模型 API 价格是多少?
- 19个API安全最佳实践,助您实现安全
- 如何免费调用Kimi API实现项目集成
- 探索 Zomato API 的潜力