InvalidCastException NHibernate

时间:2011-06-14 19:11:35

标签: hibernate nhibernate

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

我正在使用NHibernate,我有一些表,并使用NUnit进行测试。 所以,当我想通过IdEmployee或IdSet在表EmployeebySet中获取一些数据时,我在这个方法中遇到了问题。我认为问题是因为PrimaryKey是一个复合。 (IdEmployee,IdSet)

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

但是当我给IdEmployee = 3时,在最后一行出现此错误InvalidCastException System.Int32

我该怎么办?

1 个答案:

答案 0 :(得分:1)

由于您正在处理复合键,因此您必须构建测试以传递两个键:

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