NHibernate Criteria Collection包含

Ste*_*ser 10 nhibernate

我有一个父/子关系映射多对多集.

public class Parent
{
    public ISet<Child> Children { get; set; }
}

public class Child {}

public class ParentMap : ClassMap<Parent>
{
    HasManyToMany(x => x.Children)
        .AsSet();
}
Run Code Online (Sandbox Code Playgroud)

如何编写查询以选择包含给定子项的所有父项?我会猜到它会是这样的,但这个API不存在:

Session.CreateCriteria<Parent>()
   .Add(Expression.Contains("Children", child)
   .List<Parent>();
Run Code Online (Sandbox Code Playgroud)

我不能为我的生活在任何地方找到答案.我的大脑今天没有完全运作,谷歌到目前为止还没有让我失望.

RKi*_*son 9

这样的事怎么样?

Session.CreateCriteria<Parent>()
   .CreateCriteria("Children")
   .Add(Expression.Eq("Id", child.Id)
   .List<Parent>();
Run Code Online (Sandbox Code Playgroud)

要么

Session.CreateCriteria<Parent>()
   .CreateCriteria("Children")
   .Add(Expression.In("Id", child.Id)
   .List<Parent>();
Run Code Online (Sandbox Code Playgroud)

所以你可以传入一组ID.