我们有一个名为Base的基类,很少有一个名为Derived1和Derived2的继承类。要将类放在单独的表格中,我们可以使用属性或fluentAPI,但在这种情况下,我们在定义新类时始终编写此内容,但新的继承类经常出现。
最后,所有与base的继承者一起工作必须通过Bols of LolContext。
那么,是否可以自动将EF映射到相应表格中从Base继承的所有类?
public class OneContext : DbContext
{
public DbSet<Base> Bases { get; set; }
public OneContext()
: base("OneDatabase")
{
}
}
public class Base
{
[Key]
public int Id { get; set; }
public int prop1 { get; set; }
}
public class Derived1 : Base
{
public int prop { get; set; }
}
public class Derived2 : Base
{
public int prop { get; set; }
}
#UPDATE1
我会澄清我的问题。
是否有任何方法将所有'Base'继承的类放在名为tabels(或某种名称或id)的名称中,而不为每个新的后继者指定[Table(“”)]属性并定义新的DbSet&lt;&gt;对于OneContext中的每个新继任者?
答案 0 :(得分:1)
无法配置EF以自动使用TPT而不是TPH。但是,实现TPT的唯一要求是为派生实体类显式设置表名(这可以像在类定义中使用TableAttribute
一样简单)。为派生实体类创建DbSet<T>
属性是可选的。