类型发现

默认情况下 Code First 包含在模型中

  1. 在上下文类中定义为 DbSet 属性的类型。
  2. 实体类型中包含的引用类型,即使它们是在不同的程序集中定义的。
  3. 派生类,即使只将基类定义为 DbSet 属性

这是一个例子,我们只在上下文类中添加了 Company 作为 DbSet<Company>

public class Company
{
    public int Id { set; get; }
    public string Name { set; get; }
    public virtual ICollection<Department> Departments { set; get; }
}

public class Department
{
    public int Id { set; get; }
    public string Name { set; get; }
    public virtual ICollection<Person> Staff { set; get; }
}

[Table("Staff")]
public class Person
{
    public int Id { set; get; }
    public string Name { set; get; }
    public decimal Salary { set; get; }
}

public class ProjectManager : Person
{
   public string ProjectManagerProperty { set; get; }
}

public class Developer : Person
{
    public string DeveloperProperty { set; get; }
}

public class Tester : Person
{
    public string TesterProperty { set; get; }
}    

public class ApplicationDbContext : DbContext
{
    public DbSet<Company> Companies { set; get; }
}

我们可以看到所有类都包含在模型中

StackOverflow 文档