如何使用LLBLGen连接具有条件的表?

时间:2009-03-31 13:45:10

标签: c# sql sql-server llblgenpro

我有以下Sql Query,它返回我想要的结果类型:

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'

本质上,如果表2(b)中的数据列出,我想要一些等于Table1(a)的行,如果表2中不存在条件'test',我想要NULL。

我对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条记录。即使表2中的所有项都为NULL,我也需要返回3条记录,因为条件不存在。有什么想法吗?

1 个答案:

答案 0 :(得分:7)

您需要将过滤器添加到关系连接中,如下所示:

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