
深入解析API网关策略:认证、授权、安全、流量处理与可观测性
在数据库设计中,一对多(1\:N)关系是最常见的关联类型:一个“主”实体可关联多条“从”实体记录。核心是通过 外键(Foreign Key) 将表链接起来。
例如,Country
表中的一条记录(国家)可对应多个 Owner
(训练师),它们通过 CountryId
外键关联。
使用 UML 类图帮助梳理实体与字段,并直观标注关系:
Pokemon 1 ──── * Review
Country 1 ──── * Owner
Reviewer 1 ──── * Review
1
端显示单一对象,*
端显示集合。在 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; }
}
在 Models/Country.cs
内添加:
public class Country
{
public int Id { get; set; }
public string Name { get; set; }
// 一对多:一个 Country 可有多名 Owner
public ICollection < Owner > Owners { get; set; }
}
在 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; }
}
在 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; }
}
在 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 正确映射关联。原文引自YouTube视频:https://www.youtube.com/watch?v=DWi-VHElmRE