c# - 在 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# 中有两个看起来完全相同的实体吗?
解决方案
让两个实体都派生自具有所有公共属性的公共基类。这样,它们共享相同的类,以便在您的代码之间共享一个 cast,但仍然保持未来需要不同的独创性。
⚠️ 缺点是您将在以后的任何更改中手动更新这些类。
推荐阅读
- python - 将帖子中提到的用户名作为个人资料链接返回到帖子中的那些用户
- http-live-streaming - 直播音频 HLS 流无法播放
- google-chrome-extension - Chrome标签查询返回空标签数组
- sql - 识别 Redshift SQL 中的层次结构
- php - UpdateOrCreate 与模型实例
- python - python中的嵌套列表和字典
- node.js - 如何通过 node 目录中的 package.json 将特定包安装到不同的目录中?
- android - 项目中同时拥有 GMS 和 HMS
- python - pip install 和 pip download 失败,没有空间错误,尽管有足够的空间
- python - 使用箭头键在框架中的按钮之间转移焦点?