如何在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>();