每个层次结构的表
此方法将在数据库上生成一个表以表示所有继承结构。
例:
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’可以为空。
好处
- 由于不需要连接,因此性能更好,但是对于许多列,数据库可能需要许多分页操作。
- 易于使用和创建
- 易于添加更多子类和字段
缺点
- 违反第三范式维基百科:第三范式
- 创建许多可空字段