每种类型的表
此方法将在数据库上生成(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 的主键和约束
好处
- 规范化表格
- 易于添加列和子类
- 没有可空列
缺点
- 需要加入才能检索数据
- 子类推断更昂贵