NHibernate when using default-access="field.pascalcase-m-underscore" no ID value for proxy

37 Views Asked by At

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" ?

0

There are 0 best solutions below