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

时间:2019-06-03 20:26:16

标签: c# entity-framework-core

我有两个表具有完全相同的架构。如何在代码中创建1个实体并将该单个实体映射到两个不同的表?

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

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 {
}

在数据库中,我将有两个表EntityAEntityB,它们具有完全相同的架构。

使用EF 6或更早版本,看来我必须做这样的事情:

modelBuilder.Entity<Entity>()
            .Map(map => { map.ToTable("EntityA") })
            .Map(map => { map.ToTable("EntityB") });

但是,当我尝试在EF Core中执行此操作时,似乎找不到Map方法。

最好的解决方案是什么,还是我在C#中只有两个实体看起来完全相同?

1 个答案:

答案 0 :(得分:1)

两个实体都来自具有所有公共属性的公共基类。这样,他们共享相同的类,可以在强制转换后在您的代码中共享 ,但仍然保留了将来需要时有所不同的独创性。

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