这是NHibernate中单向一对一映射的问题。
学生.cs
public class Student
{
public int ID { get; set; }
public int Roll { get; set; }
public int RegNo { get; set; }
public string Name { get; set; }
public StudentDetail StudentDetail { get; set; }
}
StudentDetail.cs
public class StudentDetail
{
public int ID { get; set; }
public string Father { get; set; }
public string Mother { get; set; }
}
如何将这些类(hbm 映射文件看起来如何)映射到以下一对一关系的情况?
请仔细查看课程和表格。
我可以把<many-to-one>
标签放在哪里Student.hbm.xml
?StudentDetail.hbm.xml
如果我把它放进去Student.hbm.xml
,我怎么能映射列StudentDetail.StudentID
,因为它在另一个表中?
所以这个映射:
<class name="Student" table="Student">
<id name="ID" column="ID">
<generator class="native"/>
</id>
.......
<many-to-one class="StudentDetail" name="StudentDetail" column="StudentID" unique="true" cascade="all" />
</class>
生成以下异常:
{"Invalid column name 'StudentID'."}
另一方面<many-to-one>
不能放在StudentDetail.hbm.xml
. Coz,StudentDetail.cs
不包含任何类型的属性Student
。
我可以使用<one-to-one>
-tag 吗?如果是,我应该把它放在哪里,在Student.cs
或StudentDetail.cs
?我应该如何配置它?