class FooBase{...}
class FooDerived : FooBase {...}
class BaseContainer
{
public virtual FooBase Foo {get;set;}
}
class DerivedContainer : BaseContainer
{
public virtual new FooDerived Foo {get;set;}
}
Параметры отображения Hibernate
Вариант 1 ниже
Не удается сохранить в / c NHibernate, генерируя дополнительное объявление члена в xml (ошибка индекса вне диапазона)
<class name="BaseContainer" discriminator-value="0">
<discriminator column="ContainerType" type="int" />
<many-to-one name="Foo"
foreign-key="..."
class="FooBase"
column="FooId"
unique="true"/>
<subclass name="DerivedContainer" discriminator-value="1">
<many-to-one name="Foo"
foreign-key="..."
class="FooDerived"
column="FooId"
unique="true"/>
</subclass>
</class>
Вариант 2 независимых сопоставлений!
Выборочная операция ошибочна, не различает типы
<class name="BaseContainer" discriminator-value="0">
<discriminator column="ContainerType" type="int" />
<many-to-one name="Foo"
foreign-key="..."
class="FooBase"
column="FooId"
unique="true"/>
</class>
<class name="DerivedContainer" discriminator-value="1">
<many-to-one name="Foo"
foreign-key="..."
class="FooDerived"
column="FooId"
unique="true"/>
</class>
Застрял, был бы признателен за любые указатели, хотя я понимаю, что это может быть легко достигнуто, если сделано через таблицу для каждого подкласса, есть ли какой-либо способ выше может быть достигнуто через таблицу для иерархии классов