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
我该怎么办?
答案 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
});
}
}