我有三个共享很多列的表,所以我想使用继承来映射它们并使我的数据层更加 OOP、DRY 等等。在 NHibernate 手册中提到的所有三种继承映射策略(每个类层次结构的表、每个子类的表和每个具体类的表)中,超类(或公共接口)使用所有派生子类通用的 Id 进行映射。但是我的表上没有一个主键列被称为相同的。知道我怎么能映射这个?
在图表中:
TAXTYPE_1
- clcpnd -> 不同名称的 Id 列
- clcnmb -> 常见但名称不同的列
- clcprc -> 特定列,此表唯一
TAXTYPE_2
- rndind -> 不同名称的 Id 列
- rndamb -> 常见但名称不同的列
- rndorc -> 特定列,此表独有
TAXTYPE_3
- dasfnd -> 不同名称的 Id 列
- dastmb -> 通用但名称不同的列
- dascrc -> 特定列,此表唯一
(是的,我的专栏就是这样命名的。旧系统。无法更改。现在请杀了我)
编辑:我已经使架构更清晰。另外,我想让我的观点更清楚一点:这三个表属于同一类型,我希望能够抽象一个实现公共字段的超类型,然后将细节写入每个子类。所以我有一个TaxType 类和一个TaxType1、TaxType2 和TaxType3 子类,它们中的每一个“都是”TaxType。此外,这将使我的其他层更易于使用,因为我将使用单个 TaxType 存储库等进行查询。感谢 Jamie Ide 让我意识到这个问题是多么糟糕。