使用 EFCore 为同一实体创建多个表

问题描述 投票:0回答:1

我有 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

c# entity-framework entity-framework-core
1个回答
1
投票

如果它们是不同的表,你需要使用不同的类,否则你会如何期望这个查询工作,它会使用哪个表?:

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> {}
© www.soinside.com 2019 - 2024. All rights reserved.