代码之家  ›  专栏  ›  技术社区  ›  Stefan Moser

NHibernate标准集合包含

  •  10
  • Stefan Moser  · 技术社区  · 15 年前

    我有一个由多对多集合映射的父/子关系。

    public class Parent
    {
        public ISet<Child> Children { get; set; }
    }
    
    public class Child {}
    
    public class ParentMap : ClassMap<Parent>
    {
        HasManyToMany(x => x.Children)
            .AsSet();
    }
    

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

    Session.CreateCriteria<Parent>()
       .Add(Expression.Contains("Children", child)
       .List<Parent>();
    

    我一辈子都找不到答案。我的大脑今天还没有完全正常工作,谷歌到目前为止还让我失望。

    1 回复  |  直到 15 年前
        1
  •  9
  •   RKitson    15 年前

    像这样的怎么样?

    Session.CreateCriteria<Parent>()
       .CreateCriteria("Children")
       .Add(Expression.Eq("Id", child.Id)
       .List<Parent>();
    

    Session.CreateCriteria<Parent>()
       .CreateCriteria("Children")
       .Add(Expression.In("Id", child.Id)
       .List<Parent>();
    

    这样您就可以传入一个ID数组。