J'ai la requête SQL suivante qui retourne le type de résultats que je veux:Comment joindre des tables avec une condition en utilisant 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'
Essentiellement, je veux un certain nombre de lignes égal à Tableau 1 (a) tout en ayant les données de Tableau2 (b) la liste ou NULL si la condition 'test' n'existe pas dans Table2. Je suis plutôt nouveau à LLBLGen et ai essayé quelques choses et cela ne fonctionne pas. Je peux le faire fonctionner si la condition existe; Cependant, quand un changement d'exigences est arrivé et m'a amené à réécrire la requête à ce qui précède, je suis à perte.
est Ci-dessous l'ancien LLBLGen code C# qui a travaillé pour les produits existants, mais pas pour la requête ci-dessus:
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);
Tableau 1 a 3 enregistrements en elle. J'ai besoin des enregistrements 3 même si tous les éléments du tableau 2 sont NULL car la condition n'existe pas. Des idées?
hmm, comment faire cela dans un prefetch ...? – BozoJoe
Vous pouvez également définir un PredicateExpression et définir le .CustomFilter à cela. IPredicateExpression myFilter = new PredicateExpression(); myFilter.Add (CompanyFields.Name == "StackExchange"); productRelations.Add (ProductEntity.Relations.CompanyEntityUsingCompanyId, JoinHint.Left) .CustomFilter = monFiltre; –