2009-03-31 3 views
4

내가 원하는 결과의 종류 리턴 다음 SQL 쿼리있다 : 표 2의 데이터를하면서 (a) (b)에 나열된LLBLGen을 사용하여 조건이있는 테이블을 조인하려면 어떻게합니까?

본질적
SELECT b.ID, a.Name, b.Col2, b.COl3 
FROM Table1 a 
LEFT OUTER JOIN Table2 b on b.Col4 = a.ID AND b.Col5 = 'test' 

, I는 표 1과 동일한 행 수를 원하는을 Table2에 'test'조건이 없으면 NULL입니다.

저는 LLBLGen을 처음 사용하고 몇 가지 시도를 해봤지만 작동하지 않습니다. 나는 조건이 존재하면 작동하도록 할 수 있습니다. 그러나 요구 사항이 변경되어 위의 쿼리를 다시 작성하게되면 손실이 발생합니다. 1가에서 3 개 레코드가

LookupTable2Collection table2col = new LookupTable2Collection(); 

RelationCollection relationships = new RelationCollection(); 
relationships.Add(LookupTable2Entity.Relations.LookupTable1EntityUsingTable1ID, JoinHint.Left); 

IPredicateExpression filter = new PredicateExpression(); 
filter.Add(new FieldCompareValuePredicate(LookupTable2Fields.Col5, ComparisonOperator.Equal, "test")); 

table2col.GetMulti(filter, relationships); 

테이블 : 아래

기존 제품이 아닌 위의 질의에 근무 이전 LLBLGen C# 코드입니다. 조건이 존재하지 않기 때문에 표 2의 모든 항목이 NULL이더라도 3 개의 레코드가 필요합니다. 어떤 아이디어?

답변

7
당신은 다음과 같은 조인 관계에 필터를 추가했습니다

:

relationships.Add(LookupTable2Entity.Relations.LookupTable1EntityUsingTable1ID, JoinHint.Left).CustomFilter = new FieldCompareValuePredicate(LookupTable2Fields.Col5, ComparisonOperator.Equal, "test"); 
+0

흠을 어떻게 프리 페치에서이 작업을 수행하려면 ...? – BozoJoe

+0

또한 PredicateExpression을 정의하고 .CustomFilter를 this로 설정합니다. IPredicateExpression myFilter = new PredicateExpression(); myFilter.Add (CompanyFields.Name == "StackExchange"); productRelations.Add (ProductEntity.Relations.CompanyEntityUsingCompanyId, JoinHint.Left) .CustomFilter = myFilter; –

관련 문제