2009-11-30 83 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在位置集合中搜索职位。