private void WriteColumnPredicates(DbTextWriter writer, IEnumerable <ColumnPredicate> predicates) { int i = 0; foreach (ColumnPredicate predicate in predicates) { if (predicate.OrToPreviousGroup) { OnWriteOr(writer); } else if (i++ >= 1) { OnWriteAnd(writer); } if (predicate.IsGroup) { WriteBeginGroup(writer); for (ColumnPredicate current = predicate; current != null; current = current.NextInGroup) { WriteColumnPredicate(writer, current); } } else { WriteColumnPredicate(writer, predicate); } } }
private ParameterNames AddParameter(ColumnPredicate predicate) { if ((predicate.Value == null || predicate.Value == DBNull.Value) && (predicate.Comparison == Comparison.NotEqual || predicate.Comparison == Comparison.Equal)) { return(ParameterNames.Empty); } object value1; switch (predicate.Comparison) { case Comparison.DoesNotStartWith: case Comparison.StartsWith: value1 = predicate.Value + WildcardCharacter; break; case Comparison.DoesNotEndWith: case Comparison.EndsWith: value1 = WildcardCharacter + predicate.Value; break; case Comparison.DoesNotContain: case Comparison.Contains: value1 = WildcardCharacter + predicate.Value + WildcardCharacter; break; default: value1 = predicate.Value; break; } string param1Name = ParameterPrefix + NameGenerator(predicate.Column.Name); string param2Name = null; if (!Parameters.ContainsKey(param1Name)) { Parameters.Add(param1Name, value1); } if (predicate.Comparison == Comparison.Between) { param2Name = ParameterPrefix + NameGenerator(predicate.Column.Name); if (!Parameters.ContainsKey(param2Name)) { Parameters.Add(param2Name, predicate.Value2); } } return(new ParameterNames(param1Name, param2Name)); }
private void WriteColumnPredicate(DbTextWriter writer, ColumnPredicate current) { if (current.IsJoinPredicate) { WriteJoinPredicate(writer, current); return; } writer.WritePredicate(current.Column, GetComparisonOperator(current.Comparison, current.Value), AddParameter(current)); if (current.NextInGroup == null) { WriteEndGroup(writer); } if (current.NextInGroup != null && current.OrNextPredicate) { OnWriteOr(writer); } else if (current.NextInGroup != null) { OnWriteAnd(writer); } }
public void AppendSelect(IQueryableColumn selectColumn) { string currentCulture = CultureInfo.CurrentCulture.Name; if (!session.UseDefaultLocale && session.DefaultLocale != currentCulture && session.IsLanguageSupported(currentCulture)) { IQueryableColumn localizedColumn = selectColumn.LocalizedColumn; if (localizedColumn != null) { localizedColumn = localizedColumn.As(selectColumn.Alias); ColumnPredicate localizePredicate = (localizedColumn.Table.FindColumn("Locale") == currentCulture) | (localizedColumn.Table.FindColumn("Locale") == null); if (!((ICommandBuilder)this).WherePredicates.Contains(localizePredicate)) { ((ICommandBuilder)this).WherePredicates.Add(localizePredicate); } localizedColumn.LocalizeFallbackColumn = selectColumn; Columns.Add(localizedColumn); foreach (QueryColumn primaryKey in selectColumn.Table.PrimaryKey) { JoinPredicate joinPredicate = primaryKey == localizedColumn.Table.FindColumn(primaryKey.Name); if (!LocalizedJoinPredicates.Contains(joinPredicate)) { LocalizedJoinPredicates.Add(joinPredicate); } } JoinInWhereClause = false; return; } } AppendFrom(selectColumn.Table); Columns.Add(selectColumn); }