
HTTP API vs WebSocket API:選擇哪個來實現實時通信?
例如,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