每種型別的表
此方法將在資料庫上生成(n + 1)個表以表示所有繼承結構,其中 n 是子類的數量。
如何:
public abstract class Person
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime BirthDate { get; set; }
}
[Table("Employees")]
public class Employee : Person
{
public DateTime AdmissionDate { get; set; }
public string JobDescription { get; set; }
}
[Table("Customers")]
public class Customer : Person
{
public DateTime LastPurchaseDate { get; set; }
public int TotalVisits { get; set; }
}
// On DbContext
public DbSet<Person> People { get; set; }
public DbSet<Employee> Employees { get; set; }
public DbSet<Customer> Customers { get; set; }
生成的表格將是:
表:人員欄位:Id 名稱 BirthDate
表:員工欄位:PersonId AdmissionDate JobDescription
表:客戶:欄位:PersonId LastPurchaseDate TotalVisits
所有表中的’PersonId’將成為 People.Id 的主鍵和約束
好處
- 規範化表格
- 易於新增列和子類
- 沒有可空列
缺點
- 需要加入才能檢索資料
- 子類推斷更昂貴