多くの列を共有する 3 つのテーブルがあるので、継承を使用してそれらをマッピングし、データ レイヤーをもう少し OOP や DRY などにすることを考えました。NHibernate マニュアル (クラス階層ごとのテーブル、サブクラスごとのテーブル、具体的なクラスごとのテーブル) に記載されている継承マッピングの 3 つの戦略のすべてで、スーパークラス (または共通インターフェイス) は、すべての派生サブクラスに共通の ID でマップされます。しかし、私のテーブルの主キー列はどれも同じと呼ばれていません。これをどのようにマッピングできますか?
図では:
TAXTYPE_1
- clcpnd -> 別の名前の Id 列
- clcnmb -> 共通だが異なる名前の列
- clcprc -> このテーブルに固有の特定の列
TAXTYPE_2
- rndind -> 別の名前の Id 列
- rndmb -> 共通だが異なる名前の列
- rndorc -> このテーブルに固有の特定の列
TAXTYPE_3
- dasfnd -> 別の名前の Id 列
- dastmb -> 共通だが異なる名前の列
- dascrc -> このテーブルに固有の特定の列
(はい、私の列はそのように命名されています。古いシステムです。変更できません。今すぐ私を殺してください)
編集:スキーマをより明確にしました。また、私の主張をもう少し明確にしたいと思います。3 つのテーブルは同じ型であり、共通のフィールドを実装するスーパータイプを抽象化し、詳細を各サブクラスに書き込めるようにしたいと考えています。したがって、TaxType クラスと、TaxType1、TaxType2、および TaxType3 サブクラスがあり、それぞれが「TaxType」です。また、これにより、単一の TaxType リポジトリなどでクエリを実行するため、他のレイヤーが使いやすくなります。質問がどれほどひどいものだったかを気づかせてくれた Jamie Ide に感謝します。