2010-02-22 2 views
1

Мне нужна небольшая помощь для отображения следующей структуры с использованием Fluent NHibernate. Логика моих классов состоит в том, чтобы задать вопрос, содержащий список вариантов и один ответ. Каждый ответ содержит подпункт выбора, содержащегося в вопросе. Я надеюсь, что следующий код понятнееFluent NHibernate - лучший способ иметь два сопоставления один-ко-многим одному и тому же объекту

Я минимизировал код для каждого класса содержит только данные, имеющие отношение к данному вопросу

class Question { 
    public virtual int Id { get; set; } 
    public virtual IList<Choice> Choices { get; set; } 
    public virtual Answer Answer { get; set; } 
} 

class Choice { 
    public virtual int Id { get; set; } 
    public virtual Question Question { get; set; } 
} 

class Answer { 
    public virtual int Id { get; set; } 
    public virtual IList<Choice> Choices { get; set; } 
} 

Проблема здесь в том, как отобразить список выбора для Ответ класса, так что выбор в ответе будет ссылаться на тот же выбор в вопросе

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

Заранее спасибо

ответ

0

Я считаю, что ваши классы будут Automap точно так же, как вы их проектировали.

Затем вы можете просто заполнить свои списки выбора одним и тем же выбором в любом из них по желанию, и все должно просто работать.

Редактировать: Перейти к этой ссылке для Automapping documentation.

+0

Я понимаю, как сэкономить. Проблема больше при загрузке. Например, допустим, у меня есть выбор, который я добавил в списки вопросов и ответов. Я упорствую. Позже я загружаю вопрос и ответ. Здесь я ожидал бы, что выбор в обоих списках будет одним и тем же объектом. Это сценарий, который я ищу (если это возможно, конечно). Можете ли вы написать, как выглядит класс карты для ответа? – Gicanu

+0

Я не думаю, что вам нужны какие-либо классы карт вообще. Если вы используете функциональность Automapping, входящую в состав FNH (я добавил ссылку на мой ответ), она будет отображать все чисто на основе ваших классов. Он также загрузит их обратно в память точно так же, как они были сохранены. –

+0

Вы правы, я только что попробовал, и он работает. Я думал, что это должно быть что-то более сложное, я никогда не думал, что все так просто. Спасибо. – Gicanu

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