如何在Nhibernate QueryOver中获取具有子计数的父实体列表

如何在Nhibernate QueryOver中获取具有子计数的父实体列表,nhibernate,queryover,Nhibernate,Queryover,我有两门课: public class Parent { public int Id { get; set; } public string Name { get; set; } public ICollection<Child> Childrens { get; set; } } public class Child { public int Id { get; set; }

我有两门课:

    public class Parent
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public ICollection<Child> Childrens { get; set; }
    }

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

有人能帮我吗。

使用此DTO进行投影:

public class ParentDto
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int ChildrenCount { get; set; }
}
使用此查询:

Child childAlias = null;
ParentDto dto = null;

var dtoParents = Session.QueryOver<Parent>()
    .JoinAlias(x => x.Childrens, () => childAlias)
    .SelectList(list => list
        .SelectGroup(x => x.Id).WithAlias(() => dto.Id)
        .SelectGroup(x => x.Name).WithAlias(() => dto.Name)
        .SelectCount(() => childAlias.Id).WithAlias(() => dto.ChildrenCount))
    .TransformUsing(Transformers.AliasToBean<ParentDto>())
    .List<ParentDto>();
Child-childAlias=null;
ParentDto-dto=null;
var dtoParents=Session.QueryOver()
.JoinAlias(x=>x.Childrens,()=>childAlias)
.SelectList(list=>list
.SelectGroup(x=>x.Id)。带别名(()=>dto.Id)
.SelectGroup(x=>x.Name)。带别名(()=>dto.Name)
.SelectCount(()=>childAlias.Id)。WithAlias(()=>dto.ChildrenCount))
.TransformUsing(Transformers.AliasToBean())
.List();
您可以阅读更多关于使用DTO的
QueryOver
投影的信息。

您的
List()
应该是
List()
不是吗?
Child childAlias = null;
ParentDto dto = null;

var dtoParents = Session.QueryOver<Parent>()
    .JoinAlias(x => x.Childrens, () => childAlias)
    .SelectList(list => list
        .SelectGroup(x => x.Id).WithAlias(() => dto.Id)
        .SelectGroup(x => x.Name).WithAlias(() => dto.Name)
        .SelectCount(() => childAlias.Id).WithAlias(() => dto.ChildrenCount))
    .TransformUsing(Transformers.AliasToBean<ParentDto>())
    .List<ParentDto>();