私はNHibernateに比較的慣れていませんが、最近のいくつかのプログラムで使用しており、大好きです。4 ~ 5 つのデータベースのデータを 1 つのデータベースに集約する必要がある状況になりました。具体的にはシリアルナンバーデータです。各データベースには独自のマッピング ファイルがありますが、最終的にはすべてのエンティティが同じ基本構造 (シリアル クラス) を共有します。
NHibernate がクラスごとのマッピングを必要としていることは理解しています。そのため、最初に考えたのは、ベースとなるシリアル クラスを用意し、それを異なるデータベースごとに継承して、一意のマッピング ファイルを作成することでした (継承されたクラスにはコンテンツがありません)。これは、すべてのデータを取得してオブジェクトを設定するのに最適です。私が次にやりたいことは、これらの継承されたクラス (適切な用語が何であるかはわかりません) を、基本クラス マッピングを使用して基本クラス テーブルに保存することです。
問題は、オブジェクトに特定のマッピング ファイルを使用するよう NHIbernate に強制する方法がわからないことです。「session.save()」を使用する場合、継承されたクラスを基本クラスにキャストしても何も起こりません (マッピングがないことを訴えます)。
使用するマッピングを明示的に指定する方法はありますか? または、継承されたクラスを基本クラスにキャストするために欠落している OOP プリンシパルがいくつかありますか? それとも、このアイデアは単に悪いものですか。
NHibernate (第 8 章) に関して私が見つけたすべての継承は、この関数に完全に適用できるようには見えませんが、間違っている可能性があります (table-per-concrete-class はおそらく便利に見えますが、私はできます. NHibernate が何をすべきかをどのように判断するかについては、完全に理解できません)。