Это проблема однонаправленного однозначного сопоставления в 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
. Coz, StudentDetail.cs
не содержит никакого свойства типа Student
.
Могу ли я использовать <one-to-one>
-tag? Если да, куда мне его поместить, в Student.cs
или StudentDetail.cs
? И как мне это настроить?