【发布时间】:2010-06-07 16:03:39
【问题描述】:
这是NHibernate中单向一对一映射的问题。
Student.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 中。因为StudentDetail.cs 不包含任何Student 类型的属性。
我可以使用<one-to-one>-tag 吗?如果是,我应该把它放在哪里,Student.cs 或StudentDetail.cs?又该如何配置呢?
【问题讨论】:
-
如果你想在你的代码中使用一对一的关系,你应该考虑在数据库中也有这种关系(如果你可以改变数据库)。
-
你的照片不见了。请将其添加回问题中。
标签: nhibernate one-to-one