NHibernate问题:持久性类未知

时间:2018-07-02 16:16:04

标签: nhibernate nhibernate-mapping

我有两个表Person和PassportInfo,其结构如下:

Table Person
(
PersonID uniqueidentifier not null, (PK)
Name varchar(100) not null,
Email varchar(100) not null
)

Table PassportInfo
(
ID int identity(1,1) not null Primary Key,
personID uniqueidentifier null, (FK to PersonID in Person table)
PassportNumber varchar(100) not null
)

这也是Person的映射

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Project" namespace="Project">
  <class name="classperson" table="Person" >
    <id name="ID" type="System.Guid" column="personID">
      <generator class="Guid"/>
    </id>
    <property name="Name" column="Name" type="System.String" length="100" not-null="true" />
    <property name="Email" column="Email" type="System.String" length="100" not-null="true" />
    <one-to-one name="classpassportinfo" class="classpassportinfo" constrained="true" />
  </class>
</hibernate-mapping>

这是PassportInfo的映射

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Project" namespace="Project">
  <class name="classpassportinfo" table="PassportInfo" >
    <id name="ID" type="System.Int32" column="ID">
      <generator class="identity"/>
    </id>
    <property name="PassportNumber" column="PassportNumber" type="System.String" length="100" not-null="true" />
    <one-to-one name="classperson" class="classperson"  />
  </class>
</hibernate-mapping>

这是Person的对象类

namespace Project
{
    [Serializable]
    public class classperson : Base<System.Guid>
    {
        private System.String _Name;
        private System.String _Email;
        private classpassportinfo _classpassportinfo;

         public classperson()
        {
        }

        public classperson(System.Guid id)
        {
            base.ID = id;
        }

         public virtual System.String Name {
             get { return _Name; }
             set { _Name = value;}
         }

         public virtual System.String Email {
             get { return _Email; }
             set { _Email = value;}
         }

         public virtual classpassportinfo classpassportinfo {
             get { return _classpassportinfo; }
             set { _classpassportinfo = value;}
         }
    }
}

最后,这是PassportInfo的对象类

namespace Project
{
    [Serializable]
    public class classpassportinfo :Base<Systme.Int32>
    {
        private System.String _PassportNumber;
        private classpassportinfo _classpassportinfo;

         public classpassportinfo()
        {
        }

        public classpassportinfo(System.Int32 id)
        {
            base.ID = id;
        }

         public virtual System.String PassportNumber {
             get { return _PassportNumber; }
             set { _PassportNumber = value;}
         }

         public virtual classperson classperson {
             get { return _classperson; }
             set { _classperson = value;}
         }
    }
}

当我执行上面的代码时,我得到了一个错误并且说不知道持久类:Project.classpassportinfo。我是新来的冬眠。对此有任何帮助。

1 个答案:

答案 0 :(得分:0)

要为其他在此问题上苦苦挣扎的人阐述和澄清@Fran的评论...

对我来说,在Visual Studio中,此问题已通过以下方式解决:

  1. 打开解决方案资源管理器(项目结构导航器)
  2. 找到映射文件passportinfo.hbm.xml
  3. 右键单击并选择属性
  4. 在“高级”标签下,确保将“构建操作”设置为“嵌入资源”

该问题应立即解决。祝你好运