2012-06-27 3 views
2

NHibernate Linq는 그룹화를 이해하지 못하는 것 같습니다. 어떤 메소드 조건. 나는 다음과 같은 코드를 가지고 :NHibernate Linq group by 조건

var q = from o in session.Query<OrdreLinjeVerdier>() 
    where o.OrdreLinjeReserve > 0 
    group o by o.ProduktLager.ProduktLagerID into g 
    select new 
    { 
     ProduktLagerID = g.Key, 
     OrdreRes = g.Sum(x => x.OrdreLinjeReserve), 
     OrdreResUtenSpesial = 
      g.Where(x => x.LeveringsType.LeveringsTypeID == 1) 
      .Sum(x => (double?)x.OrdreLinjeReserve) 
    }; 

을 그리고 그것은 단지 데이터베이스에 다음과 같이 진행됩니다

select ordrelinje0_.ProduktLagerID as col_0_0_, 
    cast(sum(ordrelinje0_.OrdreLinjeReserve) as DECIMAL(19,5)) as col_1_0_, 
    cast(sum(ordrelinje0_.OrdreLinjeReserve) as DOUBLE PRECISION) as col_2_0_ 
    from OrdreLinjeVerdier ordrelinje0_ 
    where ordrelinje0_.OrdreLinjeReserve>@p0 
    group by ordrelinje0_.ProduktLagerID; 

    @p0 = 0 

그래서 기본적으로 g.Where의 조건은 SQL 쿼리에 영향을주지 않습니다.

버그와 같거나 뭔가 누락 된 것 같습니다.

+0

에 문제를 만들거나하십시오 추가 쿼리에서. 실제 결과가 정확합니까? – Ocelot20

+0

결과가 올바르지 않습니다. 100 % 동일 쿼리 결과입니다. –

+0

데이터베이스 쿼리 후 '새 선택'명령이 로컬에서 평가되지 않습니까? – stuartd

답변

0

내게 버그가있는 것 같습니다.

이 최신 안정 빌드 (오늘 현재 3.3.1)을 발생 확인한 후, 그것은 쿼리의 경우 일부가 반환 된 데이터로 평가되어있을 수 있습니다 https://nhibernate.jira.com

+0

나는 또한 3.4.0.1001로 그것을 만들었다. 나는 Jira에서 그것을 만들었고 나의 버그는 새로운 기능으로 변환되었습니다 :) 그래서 그것은 단지 존재하지 않았습니다. Where 메서드가 있지만 출력에 아무런 영향을 미치지 않는 것 같습니다. –

+0

확인. 이 작업에는 시간이 걸리기 때문에 그 동안이 쿼리에는 HQL을 사용하는 것이 좋습니다. –

+0

@AlexeyZimarev 기능 요청의 Jira 발행 번호를 제공 할 수 있습니까? – ajukraine