必要な結果のタイプを返す次の 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'
本質的に、Table2 (b) のデータをリストする一方で、Table1 (a) に等しい行数が必要です。または、条件「test」が Table2 に存在しない場合は 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 つのレコードが必要です。何か案は?