2012-01-19 4 views
1

Doe는 누구나 LINQ에서 여러 조건을 가진 참여를 어떻게 할 수 있는지 알고 있습니까? 하나 개의 조건으로 가입은 다음과 같습니다Linq to nHibernate v3.2 - On 절의 여러 조건들과 결합하기

var Query = from p in Session.Parent 
    join c in child on p.id equals c.parent_id 
    select p 

내 SQL 쿼리는 다음과 같습니다 (나는 LinqPad에서 재판을) 내가 SQL에 LINQ에 대해 여러 조건의 구문을 발견하고 작동

Select * 
from parent t1 
left join Child t2 
    on t1.id = t2.parent_id 
    and t2.age > 18 

하지만, nHibernate에서이 코드를 실행하려고 할 때 예외가 발생합니다. "메서드 또는 연산이 구현되지 않았습니다." SQL에 LINQ의 구문은 다음과 같습니다

var Query = from p in Session.Parent 
    join c in child on p.id equals c.parent_id into pc 
    from pcg in pc.Where(c => c.age > 18) 
    select p.PigProductid 

이이 기능을 NHibernate에에 LINQ에서 아직 구현되지 않은 것 같다,하지만 은 어쩌면 내가 틀렸다 (그리고 난 내가 희망).

+0

예, NHibernate에의 LINQ 공급자가 가끔 나를 슬프게 일할 수 있습니다. – Nagg

답변

0

가장 쉬운 방법은 부모 클래스에있는 하위 항목에 대한 참조 또는 컬렉션을 갖는 것입니다.

어쩌면 folwwing는

var query = from p in Session.Parent 
      from c in Session.Child.Where(c => c.age > 18) 
      where p.Id == c.parent_id 
      select p.PigProductid; 
+0

고마워, 나는 이것을 시도하고 불행히도 그것은 나던 일을. 참조 및 컬렉션에 관해서 - 당신이 맞다면, nHibernate 자신이 참여를 알고 있지만, 일반적으로 참조는 하나의 키 을 기반으로합니다. 하나 이상의 키에 조인을 원합니다. 어쨌든 감사드립니다 ... – OlgaB

+0

NHibernate는 둘 이상의 열을 가진 참조를 지원합니다. 나는 매일 매일의 일에 많은 것을 가지고있다. 테이블 구조를 게시 할 수 있습니까? – Firo

+0

죄송합니다. 저의 실수입니다. 나는 그것에 대해 생각했습니다. 우리는 하나 이상의 분야에 대한 참조를 설정할 수 있습니다. 하지만 내가 아는 바로는 참조가 내부 조인을 생성합니다. 참조가있는 왼쪽 조인을 생성하는 방법이 있는지 알고 있습니까? – OlgaB