如何在 Nhibernate QueryOver 中获取具有子计数的父实体列表
How to get List of Parent Entities with Child Count In 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; }
}
现在通过 Nhibernate QueryOver,我想在单个查询中获取所有父项的列表,其中没有子项计数。
预期输出是?:
ParentId Name ChildrenCount
1 ABC 10
2 CDE 5
谁能帮帮我。
使用此 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>();
您可以阅读更多关于 QueryOver
使用 DTO 进行投影的信息 here。
我有两个 类 :
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; }
}
现在通过 Nhibernate QueryOver,我想在单个查询中获取所有父项的列表,其中没有子项计数。
预期输出是?:
ParentId Name ChildrenCount
1 ABC 10
2 CDE 5
谁能帮帮我。
使用此 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>();
您可以阅读更多关于 QueryOver
使用 DTO 进行投影的信息 here。