我有一个使用多对多集合映射的父/子关系。
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>();
我不能为我的生活在任何地方找到答案。我的大脑今天没有完全运作,谷歌到目前为止还没有让我失望。
答案 0 :(得分:9)
这样的事情怎么样?
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。