C # / NHibernate: ассоциация ссылается на не сопоставленный класс - PullRequest
12 голосов
/ 06 января 2010

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

Я пишу небольшой модуль "Опрос" для веб-сайта. У меня есть несколько классов (Poll, PollVote и PollAnswer). Основной вопрос, опрос, является причиной проблемы. Вот как выглядит класс:

public class Poll
    {
        public virtual int Id { get; set; }
        public virtual Site Site { get; set; }
        public virtual string Question { get; set; }
        public virtual bool Locked { get; set; }
        public virtual bool Enabled { get; set; }
        public virtual ICollection<PollAnswer> AnswersSet { get; set; }
        public virtual ICollection<PollVote> VotesSet { get; set; }
    }

И вот как выглядит отображение:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="Folke"
                   namespace="Folke.Code.Domain">
  <class name="Poll">
    <id name="Id">
      <generator class="native"></generator>
    </id>
    <property name="Site"/>
    <property name="Question"/>
    <property name="Locked"/>
    <property name="Enabled"/>
    <set name="AnswersSet" lazy="true">
      <key column="PollId"/>
      <one-to-many class="PollAnswer"/>
    </set>
    <set name="VotesSet" lazy="true">
      <key column="PollId"/>
      <one-to-many class="PollVote"/>
    </set>
  </class>
</hibernate-mapping>

Это возвращает мне ошибку:

Ссылки на ассоциации не сопоставлены класс: Folke.Code.Domain.PollAnswer Описание: необработанное исключение произошло во время исполнения текущий веб-запрос. Пожалуйста, просмотрите трассировка стека для получения дополнительной информации о ошибка и откуда она возникла код.

Сведения об исключении: NHibernate.MappingException: Ассоциация ссылок не нанесенного на карту класса: Folke.Code.Domain.PollAnswer

Я действительно хочу понять это и лучше понять внутреннюю работу NHibernate. Я не понимаю, как он не может "видеть" класс PollAnswer.

Ответы [ 2 ]

13 голосов
/ 04 февраля 2014

Вам нужно перейти в файл .hbm.xml> properties> Build Action, установленный на Embedded Resource

10 голосов
/ 06 января 2010

Вы определяете отношения один-ко-многим между Poll и PollAnswer. Поэтому вам понадобится раздел для PollAnswer в вашем файле hbm.xml. Вам также понадобится один для PollVote.

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