public virtual IList <TermCountResult> GetBooksTermResultsCount(List <string> bookGuidList, TermCriteriaQueryCreator queryCreator) { using (var session = GetSession()) { Book bookAlias = null; BookVersion bookVersionAlias = null; BookPage bookPageAlias = null; Term termAlias = null; TermCountResult termResultAlias = null; var result = session.QueryOver(() => bookAlias) .JoinQueryOver(x => x.LastVersion, () => bookVersionAlias) .JoinQueryOver(x => x.BookPages, () => bookPageAlias) .JoinQueryOver(x => x.Terms, () => termAlias) .Select(Projections.ProjectionList() .Add(Projections.Group(() => bookAlias.Id).WithAlias(() => termResultAlias.BookId)) .Add( Projections.CountDistinct(() => bookPageAlias.Id) .WithAlias(() => termResultAlias.PagesCount)) ) .WhereRestrictionOn(() => bookAlias.Guid).IsInG(bookGuidList) .And(queryCreator.GetCondition()) .TransformUsing(Transformers.AliasToBean <TermCountResult>()) .List <TermCountResult>(); return(result); } }
public virtual IList <TermResult> GetBooksTermResults(List <string> bookGuidList, TermCriteriaQueryCreator queryCreator) { using (var session = GetSession()) { Book bookAlias = null; BookVersion bookVersionAlias = null; BookPage bookPageAlias = null; Term termAlias = null; TermResult termResultAlias = null; var result = session.QueryOver(() => bookAlias) .JoinQueryOver(x => x.LastVersion, () => bookVersionAlias) .JoinQueryOver(x => x.BookPages, () => bookPageAlias) .JoinQueryOver(x => x.Terms, () => termAlias) .SelectList(list => list .Select(() => bookAlias.Id).WithAlias(() => termResultAlias.BookId) .Select(() => bookPageAlias.Text).WithAlias(() => termResultAlias.PageName) .Select(() => bookPageAlias.XmlId).WithAlias(() => termResultAlias.PageXmlId)) .OrderBy(() => bookAlias.Id).Asc .OrderBy(() => bookPageAlias.Position).Asc .WhereRestrictionOn(() => bookAlias.Guid).IsInG(bookGuidList) .And(queryCreator.GetCondition()) .TransformUsing(Transformers.AliasToBean <TermResult>()) .List <TermResult>(); return(result); } }