Как объединить таблицы с условием, используя LLBLGen? - PullRequest
4 голосов
/ 31 марта 2009

У меня есть следующий запрос Sql, который возвращает желаемый тип результатов:

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'

По сути, я хочу, чтобы количество строк равнялось Таблице1 (а), а данные из Таблицы2 (б) были указаны в списке, или НЕДЕЙСТВИТЕЛЬНО, если в Таблице 2 не существует условие 'test'.

Я довольно новичок в LLBLGen и попробовал несколько вещей, и это не работает. Я могу заставить его работать, если условие существует; однако, когда изменилось требование и я переписал запрос на вышеуказанный, я в растерянности.

Ниже приведен старый код LLBLGen C #, который работал для существующих продуктов, но не для вышеуказанного запроса:

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);

Таблица 1 содержит 3 записи. Мне нужно 3 записи обратно, даже если все элементы из таблицы 2 равны NULL, потому что условие не существует. Есть идеи?

1 Ответ

7 голосов
/ 01 апреля 2009

Вы должны добавить свой фильтр в соединение отношений следующим образом:

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