InvalidCastException NHibernate

Table EmployeebySet: [**IdEmployee, IdSet**, Name, Date]
Table Employee: [IdEmployee, Name, Age...]
Table Set: [IdSet, Date, Name...]

ฉันทำงานกับ NHibernate ฉันมีตารางบางส่วน และทำการทดสอบกับ NUnit วิธีนี้ฉันมีปัญหาเมื่อฉันต้องการรับข้อมูลบางส่วนในตาราง EmployeebySet โดย IdEmployee หรือ IdSet ฉันคิดว่าปัญหาคือเพราะ PrimaryKey เป็นแบบคอมโพสิต (Idพนักงาน, IdSet)

public EmployeebySet GetEmployeebySet_byIdEmployee(int IdEmployee) 
        {
            using (ISession session = NHibernateSessionBuilder.OpenSession())
                return session.Get<EmployeebySet>(IdEmployee);
        }

แต่เมื่อฉันให้ IdEmployee = 3 ในบรรทัดสุดท้ายเกิดข้อผิดพลาด InvalidCastException System.Int32

ฉันจะทำอย่างไร?.


person ale    schedule 14.06.2011    source แหล่งที่มา


คำตอบ (1)


เนื่องจากคุณกำลังจัดการกับคีย์ผสม คุณจะต้องจัดโครงสร้างการทดสอบของคุณเพื่อให้ผ่านทั้งสองคีย์ใน:

public EmployeebySet GetEmployeebySet_byIdEmployeeAndIdSet(int IdEmployee, int IdSet)
{
    using (ISession session = NHibernateSessionBuilder.OpenSession())
    {
        return session.Get<EmployeebySet>(
            new EmployeebySet 
            {
                IdEmployee = IdEmployee,
                IdSet = IdSet
            });
    }
}
person Lester    schedule 14.06.2011