无效卡斯特例外NHibernate

无效卡斯特例外NHibernate,hibernate,nhibernate,Hibernate,Nhibernate,我和NHibernate一起工作,我有一些表格,和NUnit一起做测试。 所以,当我想通过IdEmployee或IdSet获取EmployeebySet表中的一些数据时,这种方法有一个问题。我认为问题在于PrimaryKey是一个复合键。(IdeEmployee,IdSet) public EmployeebySet GetEmployeebySet\u byideemployee(intideemployee) { 使用(ISession session=NHibernateSessionBu

我和NHibernate一起工作,我有一些表格,和NUnit一起做测试。 所以,当我想通过IdEmployee或IdSet获取EmployeebySet表中的一些数据时,这种方法有一个问题。我认为问题在于PrimaryKey是一个复合键。(IdeEmployee,IdSet)

public EmployeebySet GetEmployeebySet\u byideemployee(intideemployee)
{
使用(ISession session=NHibernateSessionBuilder.OpenSession())
返回会话.Get(ideemployee);
}
但是当我给IdeEmployee=3时,在最后一行出现了这个错误InvalidCastException System.Int32


我能做些什么?

由于您处理的是复合键,您必须组织测试以通过两个键:

public EmployeebySet GetEmployeebySet_byIdEmployee(int IdEmployee) 
        {
            using (ISession session = NHibernateSessionBuilder.OpenSession())
                return session.Get<EmployeebySet>(IdEmployee);
        }
公共EmployeebySet GetEmployeebySet\u ByIdeEmployeeAndSet(int-IdeEmployee,int-IdSet)
{
使用(ISession session=NHibernateSessionBuilder.OpenSession())
{
返回会话。获取(
新雇员名单
{
ideemployee=ideemployee,
IdSet=IdSet
});
}
}
public EmployeebySet GetEmployeebySet_byIdEmployee(int IdEmployee) 
        {
            using (ISession session = NHibernateSessionBuilder.OpenSession())
                return session.Get<EmployeebySet>(IdEmployee);
        }
public EmployeebySet GetEmployeebySet_byIdEmployeeAndIdSet(int IdEmployee, int IdSet)
{
    using (ISession session = NHibernateSessionBuilder.OpenSession())
    {
        return session.Get<EmployeebySet>(
            new EmployeebySet 
            {
                IdEmployee = IdEmployee,
                IdSet = IdSet
            });
    }
}