3
我剛剛研究了一點NHibernate,並且遇到了我必須編寫的更復雜(對我來說)查詢中的一個問題。該場景是:不能在InExpression中使用集合
我有一個'Staff'對象,其中附有'技能'集合。我想通過一個'技能'列表來查詢(例如,如果我只想要'Cook'或'Code'或兩者都可以的人)並返回匹配的員工列表,但我有有點麻煩....
我有什麼目的明智是:
public class StaffMember : Resource
{
public virtual string EmployeeId { get; set; }
public virtual bool IsTeamLeader { get; set; }
public virtual StaffMember TeamLeader { get; set; }
public virtual IList<Skill> Skills { get; set; }
}
public class Skill : BaseDomainObject
{
public virtual string Name { get; set; }
}
我猜的SQL會去是這樣的:
select distinct st.*
from staff st, resource re
inner join staffskills sks on re.id = sks.staffresourceid
inner join skill ski on ski.id = sks.skillid
where st.resourceid = re.id
and ski.id in (1,2,3,4)
我試圖用「 Expression.InG(「技能」,skillsSearchList)「,但不能在兩個集合在場時使用(例如,如果他們只有一種技能,它會沒問題!)...任何指針?
它的作品,太棒了! 如前所述,它似乎不適用於技能對象,但ID很好,因爲這是我從視圖上的過濾器控件回來的。 – Paul 2010-02-18 15:03:45