深入理解 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大模型
和专业工程师共享工作效率翻倍的秘密
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- 如何获取企查查开放平台 API Key 密钥(分步指南)
- 什么是SDK?避免技术沟通陷阱
- 使用公共API增强内容管理
- 使用 ChatGPT 和 json-server 快速实现 mock API
- 品牌视觉的新时代:Brandfetch Logo API助你轻松获取品牌标识
- Kling AI API 实战指南:通过 Replicate 集成视频生成能力
- FastAPI 快速开发 Web API 项目: 通过 SQLAlchemy 进行数据操作
- 企业位置一键查询:Python 利用天眼查 API 实现经纬度查询
- 如何快速搭建用于模拟测试的Python REST API服务器
- API管理 – 什么是API管理?
- 如何用Python抓取雅虎财经数据
- Ambee土壤API:农业科技中的创新与应用案例