深入理解 ASP.NET Core Web API:从哲学到一对多模型(Models & 1:N 关系)
作者:xiaoxin.gao · 2025-07-30 · 阅读时间:4分钟
ASP.NET Core 模型 与 1:N 关系
EF Core 主键 外键 约定
EF Core 导航属性
Stock 与 Comment 一对多示例
Web API 一对多教程
如何在 ASP.NET Core 定义 Models
引言:为何需要 API 与数据库? API 本质上是位于数据库之上的一层安全封装,让外部只能通过受控接口访问、 […]
文章目录
引言:为何需要 API 与数据库?
API 本质上是位于数据库之上的一层安全封装,让外部只能通过受控接口访问、修改数据;而数据库就像“智能文件柜”或“高级 Excel”,支持高速检索与多表关联,才被各大企业广泛采用。
一、模型(Models)与文件柜、表格的比喻

- 数据库:犹如大型文件柜,存储各类分门别类的文件;
- 模型/POCO:就是文件柜中的单个抽屉(Drawer),定义了该抽屉中表单(Sheet)的格式;
- 实体实例:则是根据模型产生的表单(数据行),最终存入数据库。
二、创建 Models 文件夹与 Stock 模型
- 在
API根目录右键新增 Models 文件夹。 -
在
Models内新建Stock.cs,并依次添加属性:public class Stock { public int Id { get; set; } // 主键 ID public string Symbol { get; set; } = string.Empty; public string CompanyName { get; set; } = string.Empty; [Column(TypeName = "decimal(18,2)")] public decimal PurchasePrice { get; set; } // 金额需用 decimal,保留两位小数 public decimal LastDividend { get; set; } public string Industry { get; set; } = string.Empty; public long MarketCap { get; set; } // 市值可能达到万亿,用 long }
三、为何要用主键与外键?
- 主键(Primary Key):唯一标识父实体(Parent),如
Stock.Id; - 外键(Foreign Key):在子实体(Child)中引用父实体主键,形成一对多(1\:N)关联。
类似“父母—子女”关系:一个 Stock 可能关联多条 Comment,却只能对应一条。
四、在 Stock 中添加导航属性(“一”端)

public class Stock
{
// … 上述属性 …
// 一对多:一个 Stock 可有多条评论
public List < Comment > Comments { get; set; } = new();
}
Comments作为导航属性,允许通过.Comments快速访问关联的所有评论。
五、创建 Comment 模型并定义外键与导航属性

在 Models/Comment.cs 中新增:
public class Comment
{
public int Id { get; set; } // 主键
public string Title { get; set; } = string.Empty;
public string Content { get; set; } = string.Empty;
public DateTime CreatedOn { get; set; } // 创建时间
// 外键字段:引用 Stock.Id
public int StockId { get; set; } // 外键【截图时间节点:4:05】
// 导航属性:对应单个 Stock(“多”端导航到“父”实体)
public Stock Stock { get; set; } = null!;
}
六、EF Core Convention(约定优于配置)
无需手动使用 Fluent API,EF Core 默认通过以下约定自动识别一对多关系:
- 子实体含
父类型+Id的外键字段(如StockId) - 父实体中对应的集合导航属性(如
List < Comment > Comments)
小结
- API 让数据库以可控、安全的方式对外服务;
- 模型(POCO)就是数据库表的代码版“蓝图”;
- 主键/外键与导航属性组合,实现一对多关系,EF Core 可自动映射。
- 下篇将通过 Controllers 与 DbContext 演示增删改查接口的完整实现。
原文引自YouTube视频:https://www.youtube.com/watch?v=jMFaAc3sa04
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册
3000+提示词助力AI大模型
和专业工程师共享工作效率翻倍的秘密
最新文章
- 如何使用 OpenAI 的 Sora API:综合使用指南
- 如何使用 amazon scraper api 进行商品数据采集
- 推荐一款支持加入数据库的AI项目:让你的数据库秒变AI数据库!
- 什么是 API Key 密钥以及如何使用它们?
- API 身份验证与授权:OAuth2、JWT 与最佳实践
- 支付宝财富黑卡权益是什么?如何充分利用这些权益?
- API Settings详解:如何通过配置优化API性能与安全性
- Jenkins API使用教程
- 如何通过MCP+魔搭免费API搭建本地数据助手
- 微软翻译API密钥获取、API对接实战指南
- 10 个最佳 API 设计实践
- 10 个保障 API 安全的认证最佳实践