nHibernate标准,用于在集合中的子项具有特定值时选择父项

Awk*_*der 5 nhibernate criteria

如果我有以下类结构,如果父类中有一个具有特定名称,那么选择父类的NHibernate标准是什么?

 public class Child
 {
     public int Id { get; set; }
     public int Name { get; set; }
 }

 public class Parent
 {
     public int Id { get; set; }
     public IList<Child> Children { get; set; }
 }
Run Code Online (Sandbox Code Playgroud)

dot*_*joe 16

我只是为集合创建一个别名并添加限制.

var parentsWithKidName = session.CreateCriteria<Parent>()
    .CreateAlias("Children", "c", JoinType.InnerJoin)
    .Add(Restrictions.Eq("c.Name", childName))
    .SetResultTransformer(Transformers.DistinctRootEntity()) 
    .List<Parent>();
Run Code Online (Sandbox Code Playgroud)

这会导致

select p.* 
from parent p 
inner join child c on /* however it's mapped? */
where c.Name = ?
Run Code Online (Sandbox Code Playgroud)

不同的根实体转换器将处理结果集并删除重复的父级.他们仍然遇到了电线.