首页 > 解决方案 > 在 EF.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 {
}

在数据库中,我将有表EntityA,并且EntityB两者都具有完全相同的架构。

使用 EF 6 或更早版本,似乎我必须执行以下操作:

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

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

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

标签: c#entity-framework-core

解决方案


让两个实体都派生自具有所有公共属性的公共基类。这样,它们共享相同的类,以便在您的代码之间共享一个 cast,但仍然保持未来需要不同的独创性。

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


推荐阅读