【问题标题】:EF Database First with TPT Inheritance only creates DbSet<T> for base clases具有 TPT 继承的 EF Database First 仅为基类创建 DbSet<T>
【发布时间】:2014-04-09 20:22:30
【问题描述】:
我有一个 EF6.1 EDMX(数据库优先)模型,并且我对几种类型使用 TPT 继承(即员工:人员),但是,在生成的 Model.Context.cs 类中,我只有 DbSet<T> 类用于我的基类型,而不是继承的。是否需要(或可以)对 EDMX 模型或 T4 模板执行任何操作来为继承类生成 DbSet<T>?
【问题讨论】:
标签:
entity-framework
inheritance
ef-database-first
【解决方案1】:
您可以通过以下方式从上下文中获取子类型
context.People.OfType<Employee>()
或者您可以通过部分类扩展上下文,您可以在其中定义子类型 DbSets 的属性:
partial class Context
{
public DbSet<Employee> Employees { get; set; }
}
这比修改 t4 模板要容易得多,因为标准 t4 模板在未来的版本中可能会发生变化,因此您必须再次修改它们。