我有 2 个兄弟实体(
Child1
和 Child2
)继承自基类(Parent
)并共享一些实体(SubEntity
):
class SubEntity {}
class Parent {
SubEntity SE { get; set; }
}
class Child1 : Parent {}
class Child2 : Parent {}
Child1
和 Child2
映射到 2 个不同的表 table-child1
和 table-child2
.
在 SubEntity 实体配置中,我有:
class SubEntityConfiguration : IEntityTypeConfiguration<SubEntity>
{
public void Configure(EntityTypeBuilder<SubEntity> builder)
{
builder.ToTable("table-child1-se");
}
}
我怎样才能将
SubEntity
映射到2个不同的表table-child1-se
和table-child2-se
?
如果它们是不同的表,你需要使用不同的类,否则你会如何期望这个查询工作,它会使用哪个表?:
var data = context.Set<SubEntity>().ToList();
如果你需要重用那个基类,那么你可以考虑使用泛型和继承的组合。例如:
abstract class BaseSubEntity {} // Make it abstract to be safer
class Child1SubEntity : BaseSubEntity {}
class Child2SubEntity : BaseSubEntity {}
class Parent<TSubEntity>
: where TSubEntity : BaseSubEntity
{
TSubEntity SE { get; set; }
}
class Child1 : Parent<Child1SubEntity> {}
class Child2 : Parent<Child2SubEntity> {}