2009-12-31 2 views
0

간단한 블로그 애플리케이션을 작성하여 MVC 및 nHibernate를 배우려고합니다.동일한 쿼리에서 Linq를 사용하여 Nhibernate에서 자식의 부모 및 개수를 선택하십시오.

게시물 테이블과 설명 테이블이 있습니다. 각 게시물은 여러 개의 댓글을 가질 수 있습니다. 이제 제 견해에서 나는 게시물의 세부 사항과 코멘트의 수를 표시해야합니다.

나는 아래의 코드 이것은 아래의 SQL을 반환

(from post in DbContext.Posts 
where post.ScheduledDate <= DateTime.Now && post.Approved == true 
orderby post.ScheduledDate descending 
select new { Post = post, CommentCount = post.Comments.Count() }).Take(10); 

시도 :

SELECT top 10 count(comments1_.Id) as y0_ 
FROM Posts this_ 
left outer join Comments comments1_ 
     on this_.Id=comments1_.PostId 
WHERE (this_.ScheduledDate <= '2009-12-29' and this_.Approved = 1) 
ORDER BY this_.ScheduledDate desc 

을 분명히 group by가 사용되지 않았다는 SQL 예외가 발생합니다.

+0

어떤 버전의 NHibernate Linq 공급자를 사용하고 있습니까? 트렁크 나 NHContrib의 최신 버전은 DLL 하나를 분리합니까? –

+0

기준 API를 사용하는 것을 사용하고 있습니다. NHContrib 하나 .. 트렁크에있는 것을 사용하는 것이 안전한가요? 초보자를위한 충분한 문서가있는 것처럼? – madaboutcode

답변

0

NHContrib LINQ 제공 업체에 이상한 문제가있는 것 같습니다. nHibernate 버전 3으로 업그레이드하고 새로운 LINQ 공급자가 동일한 쿼리에 대해 완벽하게 작동하는 것 같습니다.

0

생성 된 sql은 유선처럼 보이지만, 나는 그것을 λ 스타일로 변환했습니다. 사용해보기. LinqPad을 가지고 있지 않으면 그것을 잡아서 체크 아웃하면 인생을 편하게 만듭니다.

DbContext.Posts 
    .Where(p=>p.ScheduledDate<=DateTime.Now && p.Approved) 
    .OrderByDescending(p=>p.ScheduledDate) 
    .Select(p=> new{ post= p,CommentCount = p.Comments.Count()}) 
    .Take(10); 
관련 문제