2012-04-10 2 views
0

Итак, я застрял с этой установкой ... гипотетический бы класс с реестром детей, и есть два типа детей: мальчик & девочкаMapping Коллекция родовых объектов NHibernate

public class ClassRoster 
{ 
public IList<Child> Children{get;set;} 
} 

public abstract class Child 
{ 
public string Sex {get;} 
} 

pubic class Boy 
: Child 
{ 
public override string Sex { get { return "M"; } } 
} 

public class Girl 
: Child 
{ 
public override string Sex { get { return "F"; } } 
} 

(скорее всего, это плохой пример) ... когда я иду, чтобы получить список дочерних элементов из db, мне нужно указать значение дискриминатора для коллекции или nHibernate использовать сопоставление, которое я сделал для Child/Мальчик/девочка уже?

Я понимаю, что, когда я делаю это аналогично для проекта, над которым я работаю, я получаю исключение WrongClassException из nHibernate.


Я чувствую, что это недостаточно ясно. В моем проекте у меня уже обработано сопоставление, которое я могу вызвать в базу данных, и вытащить список детей, и он отображает мальчиков и девочек, как ожидалось. То, что я пытаюсь сделать, - это вызвать список классов и получить список детей, в которых собраны все мальчики и девочки.

+0

Плохо то, что вы используете строку в плохом виде, insatead этого типа перечисления. –

+0

Хорошо ... так что это реалистично переименование в «реальной» реализации. Я спрашиваю конкретно, когда я начерчиваю общий тип «ребенок», мне нужно затем рассказать сумке, как сформировать девушку и как сформировать мальчика, или я подхожу к этому все неправильно? –

+0

Масштабирование будет очень полезным. Потому что загрузка сумки не должна вызывать никаких проблем. Что касается разрешения объектов на него, то отвечает disriminator для класса Child –

ответ

0

Я считаю, что вы ищете, NHibernate - Inheritance Mapping

+0

У меня есть это уже для объекта. Я пытаюсь выяснить, нужно ли снова определять сопоставление наследования для коллекции или если оно автоматически использует сопоставление наследования из файла hbm фактического отображения объектов. –

+1

Это автоматический. –

0

завелся быть что-то глупо. Был 3-й уровень, который я не учитывал, и сопоставление между ClassRoster и Школой было проблемой ... Я должен сделать сопоставление «один к одному», чтобы связать «Школу» вместо «Высшей школы» ».

Если я могу обобщить код достаточно, я отправлю его сюда для дополнительной справки ... честно говоря, это была ошибка pebcak.

 Смежные вопросы

  • Нет связанных вопросов^_^