2009-11-30 85 views
0

我有一個多對多的候選人和職位之間的關係。我試圖限制取到的頭寸列表如下NHibernate多對多標準

ICriteria criteria = this.GetSession().CreateCriteria(typeof(Candidate), "c"); 
criteria.CreateAlias("c.Positions", "plist",NHibernate.SqlCommand.JoinType.InnerJoin); 
criteria.CreateAlias("plist.items", "p",NHibernate.SqlCommand.JoinType.InnerJoin); 
criteria.Add(Expression.And 
         (
          Expression.Eq("c.CandidateID", candidateID), 
          Expression.Eq("p.PositionID", positionID) 
         )); 

但是,所有的頭寸都在列表中。可能是什麼原因?

回答

0

我能澄清你的要求嗎?您是否在說要退回特定候選人,並且只有「候選人職位」集合才能包含具有指定職位ID的職位?

如果是這樣,我不認爲它是這樣工作的。您正在指定您想要檢索具有與指定ID的位置關聯的指定ID的候選人。一旦候選人被加載,它將隨後加載(懶洋洋地或以其他方式)全部該候選人的相關職位。這是正確的行爲,因爲候選人應該始終訪問所有關聯的對象。

我認爲您需要做的是加載候選人,然後使用您需要的ID在位置集合中搜索職位。