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

Moi*_*oiz 5 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 string Name { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

现在通过 Nhibernate QueryOver 我想在单个查询中获得所有 Parent 的列表,而没有 Count 的孩子。

预期输出是?:

ParentId  Name ChildrenCount
1         ABC      10
2         CDE      5
Run Code Online (Sandbox Code Playgroud)

谁能帮我 。

Naj*_*era 5

使用此 DTO 进行投影:

public class ParentDto
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int ChildrenCount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

使用此查询:

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>();
Run Code Online (Sandbox Code Playgroud)

您可以在此处阅读有关QueryOver使用 DTO 进行投影的更多信息。