C# 在EF.Core中,将单个实体映射到两个表

C# 在EF.Core中,将单个实体映射到两个表,c#,entity-framework-core,C#,Entity Framework Core,我有两个表具有完全相同的模式。如何在代码中创建一个实体并将该实体映射到两个不同的表 我尝试的一个选项是创建第二个实体,该实体继承自第一个实体,但未定义其他属性: public class EntityA { public string PropertyA { get; set; } public string PropertyB { get; set; } public string PropertyC { get; set; } public string Pr

我有两个表具有完全相同的模式。如何在代码中创建一个实体并将该实体映射到两个不同的表

我尝试的一个选项是创建第二个实体,该实体继承自第一个实体,但未定义其他属性:

public class EntityA {
    public string PropertyA { get; set; }
    public string PropertyB { get; set; }
    public string PropertyC { get; set; }
    public string PropertyD { get; set; }
    public string PropertyE { get; set; }
}

public class EntityB : EntityA {
}
在数据库中,我将有表
EntityA
EntityB
,它们都具有完全相同的模式

使用EF 6或更早版本,我似乎不得不做如下事情:

modelBuilder.Entity<Entity>()
            .Map(map => { map.ToTable("EntityA") })
            .Map(map => { map.ToTable("EntityB") });
modelBuilder.Entity()
.Map(Map=>{Map.ToTable(“EntityA”)})
.Map(Map=>{Map.ToTable(“EntityB”)});
然而,当我尝试在efcore中这样做时,似乎找不到Map方法


对于这个问题,最好的解决方案是什么?或者我会在C中有两个实体,它们看起来完全相同吗?

让这两个实体都派生自一个具有所有公共属性的公共基类。这样一来,它们共享同一个类,以便在您的代码中在一次转换后共享,但仍然保留了在将来需要时不同的原创性


⚠️ 缺点是,您将在将来的任何更改中手动更新这些类

它们的名字相同吗?为什么要将它们映射到一起?代码优先?目前,我有一个实体,希望使用该实体映射到两个不同的表。这主要是为了减少重复,并在某些事情发生变化时使其变得更容易(尽管胜利很小:)。先发代码是的。通过创建第二个实体并从第一个实体继承,我尝试了上面解释的选项,但随后我得到一个错误
没有这样的列:a.Discriminator