2011-06-14 88 views
0
Table EmployeebySet: [**IdEmployee, IdSet**, Name, Date] 
Table Employee: [IdEmployee, Name, Age...] 
Table Set: [IdSet, Date, Name...] 

我正在使用NHibernate,我有一些表,並使用NUnit進行測試。 因此,當我想通過IdEmployee或IdSet獲取表EmployeebySet中的某些數據時,此方法中有一個問題。我認爲這個問題是因爲PrimaryKey是一個組合。 (IdEmployee,IdSet)InvalidCastException NHibernate

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

但是,當我給IdEmployee = 3,在最後一行出現此錯誤InvalidCastException的System.Int32

我能做些什麼?

回答

1

既然你要處理的組合鍵,你將不得不組織你的測試中通過兩個鍵:

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