我试图查询包含任何指定的categoryID的对象。如果我只使用我的一个分解,我会得到正确的结果,但不是当我将它们合并时。C#查询任何在IList中的NHibernate
我想要所有具有CategoryID 1或2或3和CategoryID 5的对象。有什么建议吗?
'Test'的映射:HasMany(x => x.Categories).KeyColumn(“PageVersion”)。ExtraLazyLoad();
public class Test
{
public virtual IList<PageCategory> Categories { get; set; }
}
public class PageCategory
{
public virtual int ID { get; set; }
public virtual int CategoryID { get; set; }
public virtual int PageVersion { get; set; }
}
public static Test Query()
{
var query = NHibernateHelper.OpenSession().CreateCriteria<Test>();
query.CreateAlias("Categories", "Categories", NHibernate.SqlCommand.JoinType.InnerJoin);
Junction disjunction = Restrictions.Disjunction();
disjunction.Add(Restrictions.In("Categories.CategoryID", new List<int> { 1, 2, 3}));
query.Add(disjunction);
Junction disjunction2 = Restrictions.Disjunction();
disjunction2.Add(Restrictions.In("Categories.CategoryID", new List<int> { 5 }));
query.Add(disjunction2);
}
你应该添加你的两个'Restrictions.In'相同的脱节,而不是创建两个单独的分离。 – jbl
然后我得到ID为1,2,3,5的所有结果。我想为每个复选框列表我使用,这意味着项目应该包含1,2,3或5 – Tobbe
你可以显示你想要生成的SQL?这将使标准变得更容易。 –