NHibernate条件查询使用AND进行多对多查询

时间:2018-11-17 19:14:47

标签: asp.net nhibernate nhibernate-criteria

我正在尝试为一种情况查询标准查询,在这种情况下,我要过滤的实体与另一个实体存在多对多关系。该标准包括可以进行“与”或“或”运算的多对多关系中的两个或多个条件。例如:

基本实体:

public class Student
{
    ...

    public ICollection<Attribute> Attributes { get; set; }
}

public class StudentMap : ClassMap<Student>
{
     HasManyToMany(s => s.Attributes).Table("${Student.TableName}_{Attribute.TableName}")
            .Cascade.All();
}

我需要以All Students who have Attribute A AND Attribute B之类的方式查询这种关系。

当前,我编写了以下代码,该代码有效,但仅当存在单个属性条件(没有AND)时:

var subQuery = DetachedCriteria.For<Attribute>("attr")
    .SetProjection(Projections.Id()).Add(Expression.Eq("Code", "A"))
    .Add(Property.ForName("attr.Id").EqProperty("ats.Id"));

var query = DetachedCriteria.For<Student>("stu")
    .CreateAlias("Attributes", "ats").Add(Subqueries.Exists(subQuery));

在将子查询作为条件添加到主查询之前,我尝试过使用子查询并创建其中的Conjunction。我知道这是行不通的,因为只有一个。不胜感激!

0 个答案:

没有答案