在数据导入期间处理两个非常相似 类 的最佳方法

Best way to handle two very similar classes during data import

背景: 我正在构建一个 C# 数据迁移工具,以将数据从旧应用程序(使用 SQL 服务器数据库)移动到我们的新应用程序(也使用 SQL 服务器数据库),但我正在浏览我们的 Web API 而不是直接插入到新数据库中以重用业务逻辑等等。我正在使用 Entity Framework 从遗留数据库中读取数据。

问题: 较旧的数据库系统,出于我不知道的原因,除了 table 和最新版本的记录外,还使用存档 table。例如,可能有一个 "person" table,然后还有一个 "a_person" table,其中包含以前记录的多个存档副本。我计划将这些存档记录保存在同一个 table 中,只是在时间点体系结构中链接在一起。所以它们本质上是相同的列,但是由于 EF6,它们是两个不同的对象,这意味着当我尝试将值从 "person" 和 "a_person" 移动到最新的数据对象时,我将所有代码加倍将发送到 API。如果只是一个例子,没什么大不了的,但是大约有六个 table 具有这种模式。

我正在想办法解决这个问题。我最初考虑向生成的 EF6 classes 添加接口,例如语义糖,以允许传递给通用方法,但我仍然需要将其转换回原始 classes,因此它不会给我买任何东西。

接下来,我想将每个 table 序列化为一个 json 字符串,我可以将其反序列化为字典 - 然后使用通用方法提取我的值。但是,我觉得这样可能会不必要地慢。

最近,我正在考虑更多地回到我最初关于接口的想法,但部分 class 实现了一个通用接口的 EF6 和一个可以 return 不同的实现父 EF6 class 的值。因此,"parent" 和 "a_parent" 实体都将具有部分 class 实体,它们实现一个接口并且 return 父实体的所有值。不过,这又一次感觉像是复制我访问值的代码的一种更奇特的方式。

序列化和反序列化感觉是真正消除重复代码的唯一方法。虽然迁移所需的时间长短不是关键因素,但我宁愿不创建可能的最缓慢的解决方案。我想还有反射。反射是否优于序列化和反序列化?

我确定并非常满意的解决方案是基于 AlwaysLearning 的评论 - 我统一了两个记录。