C#/NHibernate:关联引用未映射的类

C#/NHibernate:关联引用未映射的类,c#,nhibernate,C#,Nhibernate,我已经为这个NHibernate问题挣扎了几个小时。我在网络上以及NHibernate文档上进行了广泛的研究,我对这个问题没有任何意义。我对NHibernate比较陌生,我喜欢它。不过,那样的话,我快发疯了 我正在为一个网站写一个小的“民意测验”模块。我有几门课(Poll、PollVote和PollAnswer)。最主要的一个,民意调查,是引起这个问题的原因。这是该类的外观: public class Poll { public virtual int Id { get;

我已经为这个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>
公共类投票
{
公共虚拟整数Id{get;set;}
公共虚拟站点站点{get;set;}
公共虚拟字符串问题{get;set;}
公共虚拟布尔锁定{get;set;}
启用公共虚拟bool的{get;set;}
公共虚拟ICollection应答集{get;set;}
公共虚拟ICollection VotesSet{get;set;}
}
这就是映射的样子:

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 描述:未处理的异常 在执行过程中发生 当前web请求。请检查 有关堆栈跟踪的详细信息,请参阅 错误及其来源 密码

例外情况详情: NHibernate.MappingException: 关联引用未映射的类: Folke.Code.Domain.PollAnswer


我真的很想了解这一点,更好地了解NHibernate的内部工作。我不明白为什么它不能“看到”答案“类。

您正在定义Poll和PollAnswer之间的一对多关系。因此,您需要在hbm.xml文件中为PollAnswer创建一个部分。PollVote也需要一个。

您需要转到.hbm.xml文件>属性>将生成操作设置为嵌入式资源

此外,在hbm.xml文件属性中,确保将生成操作设置为嵌入式资源