I have the following classes:
public class Course
{
private string m_Name;
private long m_ID;
public virtual long ID
{
get => m_ID;
set
{
if (m_ID != value)
{
m_ID = value;
}
}
}
public virtual string Name
{
get => m_Name; set
{
m_Name = value;
}
}
}
public class Student
{
private string m_LastName;
private string m_FirstMidName;
private long m_CourseID;
private long m_TeacherID;
private Course m_Course;
private Teacher m_Teacher;
private long m_ID;
public virtual long ID
{
get => m_ID;
set
{
if (m_ID != value)
{
m_ID = value;
}
}
}
public virtual string LastName { get => m_LastName; set { m_LastName = value; } }
public virtual string FirstMidName { get => m_FirstMidName; set { m_FirstMidName = value; } }
public virtual long CourseID { get => m_CourseID; set { m_CourseID = value; } }
public virtual long TeacherID { get => m_TeacherID; set { m_TeacherID = value; } }
public virtual Course Course { get => m_Course; set { m_Course = value; } }
public virtual Teacher Teacher { get => m_Teacher; set { m_Teacher = value; } }
}
And in the mapping I have default-access="field.pascalcase-m-underscore"
<hibernate-mapping xmlns = "urn:nhibernate-mapping-2.2" assembly = "NHibernateLazy" namespace = "NHibernateLazy" default-lazy="true" default-access="field.pascalcase-m-underscore">
So when I load a Student then NHibernate creates a proxy for Course but there is no value for Course.ID and throws exception when session is closed
But if I remove default-access="field.pascalcase-m-underscore" then it works fine and then proxy course has ID value (even with closed session).
How to fix it while using default-access="field.pascalcase-m-underscore" ?