我在NHibernate中遇到一对一关系的问题。我的对象的结构如下:
public partial class PersonDataContext
{
protected int _personid;
protected string _name;
protected EmployeeDataContext _employee;
}
public partial class EmployeeDataContext
{
protected int _personid;
protected string _payrollno;
}
在我的模型中,每个PersonDataContext必须只包含一个EmployeeDataContext,并且存在的每个EmployeeDataContext都是PersonDataContext的一部分。这是一种普遍的一对一关系。
现在,到映射:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="PersonDataContext, DAL" table="`Person`" lazy="false">
<id name="PersonId" column="`PersonId`" type="int">
<generator class="native" />
</id>
<property type="string" name="name" column="`name`" />
<one-to-one name="Employee" cascade="save-update" class="EmployeeDataContext,DAL" />
</class>
</hibernate-mapping>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="EmployeeDataContext, DAL" table="`Employee`" lazy="false">
<id name="PersonId" column="`PersonId`">
<generator class="foreign">
<param name="property" >PersonId</param>
</generator>
</id>
<property type="string" length="30" name="PayRollNo" column="`PayRollNo`" />
</class>
</hibernate-mapping>
然后我创建一个PersonDataContext,它自己创建一个EmployeeDataContext。然后,当我保存它时,NHibernate抛出异常,“无法解析属性:PersonId”。
答案 0 :(得分:0)
外来属性错误,将'PersonId'修改为'PersonDataContext',如下所示:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="EmployeeDataContext, DAL" table="`Employee`" lazy="false">
<id name="PersonId" column="`PersonId`">
<generator class="foreign">
<param name="property" >**PersonDataContext**</param>
</generator>
</id>
<property type="string" length="30" name="PayRollNo" column="`PayRollNo`" />
</class>
</hibernate-mapping>
答案 1 :(得分:0)
您在EmployeeDataContext中没有PersonId属性。
你应该有一个PersonDataContext类型的PersonDataContext属性,这就是参数中的内容。