조인은 .Join()
으로 충분합니다. 매핑에서 이러한 관계를 정의한 경우 조인 방법을 지정하지 않아도됩니다.
나는 보통 JoinAlias
을 사용하는 것이 더 편리하다고 생각합니다. 집계는 Projections
을 사용하여 수행됩니다 (별칭 및 예상 내용 here 참조).
간단한 합계 투영과 그룹 투영이 필요합니다.
결과로 object []
을 사용하고 위의 링크와 같이 캐스팅하거나 사용자 정의 DTO를 정의하고 AliasToBeanResultTransformer
을 사용할 수 있습니다. (here은 꽤 오래된 블로그 게시물이며 구문은 이제 람다 식을 허용하도록 변경되었습니다).
상위 15 %에 대해서는 확실하지 않습니다.
QueryOver().Take()
은 상수를 허용합니다. 비율에 대한 기본 지원이 있는지 확신하지 못합니다.
그래도 자신 만의 프로젝션을 구현할 수 있습니다. here을 참조하십시오.
편집 : 간단한 프로젝션 예제
얼마나 게으름니까? 방금 github에서 복사했습니다.
조인, 별칭, 투영 등이 있습니다. 필요한 모든 것. 재미로 SUM 프로젝션을 추가했습니다. 다른 모든 속성을 그룹화별로 할 물론 얼마나
주의 사항 : I 투사 해결 방법을 생각하지 않았다
Customer customer = null;
Employee employee = null;
OrderHeader orderHeader = null;
var orderHeaders = Session.QueryOver<Order>()
.JoinAlias(o => o.Customer,() => customer)
.JoinAlias(o => o.Employee,() => employee)
.SelectList(list => list
.SelectGroup(o => o.OrderedOn).WithAlias(() => orderHeader.OrderedOn)
.SelectGroup(o => customer.Name).WithAlias(() => orderHeader.Name)
.SelectGroup(o => employee.FirstName).WithAlias(() => orderHeader.FirstName)
.SelectGroup(o => employee.LastName).WithAlias(() => orderHeader.LastName)
.SelectSum(o => employee.Salary).WithAlias(() => orderHeader.JhonnysProjectionExample))
.TransformUsing(Transformers.AliasToBean<OrderHeader>())
.List<OrderHeader>();
. 꽤 깔끔한. –
예제가 변경 되었습니까? 단지 집계의. 예쁘게 :-) –
@ Zen-C 약간의 예를 들어 나의 대답을 편집했습니다 –