Таблица nhibernate для каждой иерархии классов, отображающая производных членов класса, которые скрывают членов базового класса - PullRequest
3 голосов
/ 26 мая 2011
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>

Застрял, был бы признателен за любые указатели, хотя я понимаю, что это может быть легко достигнуто, если сделано через таблицу для каждого подкласса, есть ли какой-либо способ выше может быть достигнуто через таблицу для иерархии классов

...