複数の名前と値のペアと、一緒に属する行を識別するDomain列を含むDomainTypeという表があります。私は、PackageTypeとComponentTypeという2つのC#クラスを持っています。これらのクラスのデータは、同じ値の表に、それぞれ「PackageType」と「ComponentType」というドメイン値を持っています。私はこれらを定義するために私のhbm.xmlファイルでNHibernate discrimatorのコンセプトを使うことができると思ったが、私のアプリでPackageTypesをクエリするたびにDomainTypeテーブルからすべての行を返す。NHibernate Discrimator
マッピングロジック/構文が悪いのか、私がdiscriminatorsの概念を誤解しているのか分かりません。これらは結局サブクラスではないので、これは正しい戦略(?)ではないかもしれません。ここで
は私のPackageTypeテーブルのマッピングファイルです:
<class name="PackageType" table="DomainType"
discriminator-value="PackageType" dynamic-update="true">
<id name="Id" column="Id" type="Int32" unsaved-value="0">
<generator class="identity" />
</id>
<discriminator column="Domain" type="AnsiString" not-null="true" />
<property name="Description" column="Description"
type="AnsiString" length="100" not-null="true" />
</class>
は、ここでドメインタイプテーブル(ものも含め、ドメイン= "COMPONENTTYPE")からすべての行を返すC#コードです:
IEnumerable<PackageType> rslt = GetSession().Query<PackageType>().ToList();
Discriminatorsはサブクラスでしか動作しません(私は信じています) – Rippo