每个层次结构的表

此方法将在数据库上生成一个表以表示所有继承结构。

例:

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

好处

  • 由于不需要连接,因此性能更好,但是对于许多列,数据库可能需要许多分页操作。
  • 易于使用和创建
  • 易于添加更多子类和字段

缺点