Отображение отношения «многие ко многим» для наследования классов в Hibernate / NHibernate - PullRequest
0 голосов
/ 26 октября 2011

В самой упрощенной версии, вот моя проблема enter image description here

public class D{
 public List<A> ListofA {get;set;}
}

public interface A{
}

public class B implements A{
}

public class C implements A{
}

class B отображается на Таблица B class C отображается на Таблица C

A является просто интерфейсом и не отображается ни в одну таблицу.

Как определить полиморфную (many-to-many) связь между D ->A

Я использую NHibernate с FluentMapping.

1 Ответ

0 голосов
/ 26 октября 2011

Я пытаюсь ответить на свой вопрос. Однако я хотел бы найти ЛУЧШЕЕ / БОЛЬШЕ РАЦИОНАЛЬНОЕ решение этой проблемы.

Вот мое решение:

Редизайн Class D

Я перепроектировал class D как

      public class D {
              public List<MagicObj> ListofA {get;set;}
      }

       //New Entity added which was not there in the question before.
       public class MagicObj{
              public A   ActualEntity{get;set;}
       }

НЕТ изменений в оставшихся объектах.

         public interface A{

         }

         public class B implements A{

         }

         public class C implements A{

         }

Это изменение дизайна должно позволить мне отобразить

Свободное отображение

для вышеупомянутой переработанной структуры класса

D->MagicObj as HasMany(x=>x.ListofA)
MagicObj->A as ReferenceAny(x=>x.ActualEntity)
                    .EntityIdentifierColumn("EntityType")
                    .EntityIdentifierColumn("EntityId");

Полагаю, я решил добавить новое отношение между Class D и Class A. Я не смог найти способ отобразить это прямо в Fluent.

...