Entity framework EF Database First和TPT继承仅为基类创建DbSet

Entity framework EF Database First和TPT继承仅为基类创建DbSet,entity-framework,inheritance,ef-database-first,Entity Framework,Inheritance,Ef Database First,我有一个EF6.1 EDMX Database First模型,我正在对几种类型使用TPT继承,例如Employee:Person,但是,在生成的model.Context.cs类中,我只为我的基本类型使用DbSet类,而不是继承的类型。是否需要或可以对EDMX模型或T4模板执行任何操作,以便为继承类生成DbSet?您可以通过 context.People.OfType<Employee>() 也可以通过一个分部类扩展上下文,在该分部类中定义子类型dbset的属性: partial

我有一个EF6.1 EDMX Database First模型,我正在对几种类型使用TPT继承,例如Employee:Person,但是,在生成的model.Context.cs类中,我只为我的基本类型使用DbSet类,而不是继承的类型。是否需要或可以对EDMX模型或T4模板执行任何操作,以便为继承类生成DbSet?

您可以通过

context.People.OfType<Employee>()
也可以通过一个分部类扩展上下文,在该分部类中定义子类型dbset的属性:

partial class Context
{
    public DbSet<Employee> Employees { get; set; }
}

这比修改t4模板容易得多,因为标准t4模板在将来的版本中可能会更改,因此您必须再次修改它们。

您可以通过以下方式从上下文中获取子类型:

context.People.OfType<Employee>()
也可以通过一个分部类扩展上下文,在该分部类中定义子类型dbset的属性:

partial class Context
{
    public DbSet<Employee> Employees { get; set; }
}

这比修改t4模板容易得多,因为标准t4模板在将来的版本中可能会更改,因此您必须再次修改它们。

没有考虑实现分部类。非常感谢。我没有想到要实现一个局部类。非常感谢你。