Отображение для мультиинтерфейсного наследуемого класса в NHibernate - PullRequest
0 голосов
/ 11 августа 2010

У меня есть интерфейс:

public interface IHasList<T>
{
    IList<T> Items { get; set; }
}

И я хочу отобразить такой класс, используя сопоставление один-ко-многим со списками:

public class Model : IHasList<A>, IHasList<B>
{
    ...
}

Можно ли это сделать?Если да, то как написать отображение?

1 Ответ

0 голосов
/ 11 августа 2010

Это возможно, но немного странно.

Во-первых, чтобы объявить это в C #, модель должна выглядеть следующим образом:

public class Model : IHasList<A>, IHasList<B>
{
    IList<A> IHasList<A>.Items { get; set; }
    IList<B> IHasList<B>.Items { get; set; }
}

Итак, вы должны заставить NHibernate понять, что:

<bag name="IHasList&lt;A&gt;.Items" table="ModelItemA">
  <key />
  <one-to-many class="A" />
</bag>
<bag name="IHasList&lt;B&gt;.Items" table="ModelItemB">
  <key />
  <one-to-many class="A" />
</bag>

(я предполагаю, что A и B являются сопоставленными сущностями с регулярным отношением один-ко-многим, измените его на множество-ко-многим или элемент и добавьте каскадные / обратные атрибуты при необходимости)

Это довольно чисто, беспорядок на самом деле вводится с помощью экранирования XML. Вам также придется использовать полные имена для классов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...