每個層次結構的表

此方法將在資料庫上生成一個表以表示所有繼承結構。

例:

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’可以為空。

好處

  • 由於不需要連線,因此效能更好,但是對於許多列,資料庫可能需要許多分頁操作。
  • 易於使用和建立
  • 易於新增更多子類和欄位

缺點