每個層次結構的表
此方法將在資料庫上生成一個表以表示所有繼承結構。
例:
public abstract class Person
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime BirthDate { get; set; }
}
public class Employee : Person
{
public DateTime AdmissionDate { get; set; }
public string JobDescription { get; set; }
}
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 Discrimitator AdmissionDate JobDescription LastPurchaseDate TotalVisits
其中’Discriminator’將在繼承和’AdmissionDate’上保留子類的名稱,‘JobDescription’,‘LastPurchaseDate’,‘TotalVisits’可以為空。
好處
- 由於不需要連線,因此效能更好,但是對於許多列,資料庫可能需要許多分頁操作。
- 易於使用和建立
- 易於新增更多子類和欄位
缺點
- 違反第三正規化維基百科:第三正規化
- 建立許多可空欄位