Nhibernate:完全に最優先されたベースドメインエンティティ
-
04-10-2019 - |
質問
私には私が持っている状況があります Common.Domain.Person
と Specific.Domain.Person
.
最初のパッケージの一部として最初に提供する必要があります。
2番目は、特定のプロジェクトのニーズに合わせて一般的なパッケージをカスタマイズする必要がある場合に表示されます。
オブジェクトモデルでは、継承で簡単に実装できます。
ただし、NHマッピングでは、小さな問題が発生しました。
Nhibernateを作成できます <subclass>
マッピングですが、それは私が判別器を使用する必要があるでしょう。ただし、特定の人クラスが継承された場合、この特定のプロジェクトでは一般的なクラスインスタンスは決して使用されないことを知っています。
差別列を基本クラスに追加せずにこれを実装する最良の方法は何ですか(差別する違いはないため)。
解決
これが私が望んでいたものであり、nhibernateはXMLエンティティを使用してそれをサポートしています。残念ながら、この機能は(少なくとも)NH V2 ++以来ボルキングされています。
参照してください NhibernateでDoctypeを使用します
セッションファクトリー(動的マッピング)を作成するときに、これらのProperiesプログラムを注入することができます。
参照してください http://ayende.com/blog/archive/2008/05/01/dynamic-mapping-with-nhibernate.aspx
他のヒント
speciecy.domain.personをマップして、mappingをcommon.domain.personをマップしておくだけです。
あなたがそれのインスタンスを保存していない場合、Nhibernateはそれについて知る必要はありません。