родитель- ›ребенок отношение к родительскому-› группа- ›ребенок

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

table parent
(
  id
)

table child
(
  id
  parent_id
  group_id
  group_name
  group_Flag
  group_type
  name
)

и я хотел бы сопоставить их с

class Parent
{
    public long Id { get; private set; }
    public ICollection<Group> Groups { get; private set; }
}
class Group
{
    public long Id { get; set; }
    public string Name { get; set; }
    public GroupType Type { get; set; }
    public bool Flag { get; set; }
    public ICollection<Child> Childs { get; private set; }
}
class Child
{
    public long Id { get; private set; }
    public string Name { get; set; }
}
  1. Это возможно?
  2. Как это сделать с помощью любого из методов отображения NHibernate (xml, MbC, Fluent, ...)

Обновление: некоторая дополнительная информация

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



Ответы (1)


Вот несколько вариантов для начала:

Вы можете попробовать взглянуть на раздел «сопоставление коллекций» справочника NHibernate: - http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-collections

Затем вы можете попытаться сопоставить свойство Groups класса Parent, используя предложение «where» сопоставления коллекции:

(9) где (необязательно) укажите произвольное условие SQL WHERE, которое будет использоваться при извлечении или удалении коллекции (полезно, если коллекция должна содержать только подмножество доступных данных)

И сопоставьте свойство Childs класса Group таким же образом.

В противном случае вы можете создать несколько представлений для другого представления данных и сопоставить свои объекты с этими представлениями (установив update = "false" и insert = "false" для сопоставления свойств идентификатора)

person mathieu    schedule 16.07.2012
comment
что я должен положить в место для групп? Столбцы group_xxx одинаковы для каждого дочернего элемента, child_id неизвестны / различны для каждого родителя. - person Firo; 16.07.2012
comment
если у меня есть мое мнение Groups ( group_id, parent_id ), как мне добавить к этому новые группы? - person Firo; 16.07.2012
comment
просьба указать все ваши требования в вопросе, иначе будет сложно предложить правильное решение вашей проблемы :) - person mathieu; 16.07.2012
comment
спасибо за ваше время. Требования находятся в вопросе, это отображение 2 таблиц на 3 сущности с 1-n ассоциациями между ними. Мои комментарии, где просто уточнить ваш ответ. - person Firo; 17.07.2012