protected virtual void SetQueryContext(SimpleQuery query) { _query = query; _tableName = _schema.BuildObjectName(query.TableName); _table = _schema.FindTable(_tableName); var selectClause = _query.Clauses.OfType <SelectClause>().SingleOrDefault(); if (selectClause != null) { if (selectClause.Columns.OfType <AllColumnsSpecialReference>().Any()) { _columns = ExpandAllColumnsReferences(selectClause.Columns).ToArray(); } else { _columns = selectClause.Columns.ToArray(); } } else { _columns = _table.Columns.Select(c => ObjectReference.FromStrings(_table.Schema, _table.ActualName, c.ActualName)).ToArray(); } HandleWithClauses(); _whereCriteria = _query.Clauses.OfType <WhereClause>().Aggregate(SimpleExpression.Empty, (seed, where) => seed && where.Criteria); _havingCriteria = _query.Clauses.OfType <HavingClause>().Aggregate(SimpleExpression.Empty, (seed, having) => seed && having.Criteria); _commandBuilder.SetText(GetSelectClause(_tableName)); }
public IEnumerable <string> GetJoinClauses(IEnumerable <JoinClause> joins, ICommandBuilder commandBuilder) { var expressionFormatter = new ExpressionFormatter(commandBuilder, _schema); foreach (var join in joins) { var builder = new StringBuilder(JoinKeyword); builder.AppendFormat(" JOIN {0}{1} ON ({2})", _schema.FindTable(_schema.BuildObjectName(join.Table.ToString())).QualifiedName, string.IsNullOrWhiteSpace(join.Table.GetAlias()) ? string.Empty : " " + _schema.QuoteObjectName(join.Table.GetAlias()), expressionFormatter.Format(join.JoinExpression)); yield return(builder.ToString().Trim()); } }
private void SetQueryContext(SimpleQuery query) { _query = query; var selectClause = _query.Clauses.OfType <SelectClause>().SingleOrDefault(); if (selectClause != null) { _columns = selectClause.Columns.ToArray(); } else { _columns = new SimpleReference[0]; } _whereCriteria = _query.Clauses.OfType <WhereClause>().Aggregate(SimpleExpression.Empty, (seed, where) => seed && where.Criteria); _havingCriteria = _query.Clauses.OfType <HavingClause>().Aggregate(SimpleExpression.Empty, (seed, having) => seed && having.Criteria); _tableName = _schema.BuildObjectName(query.TableName.Split('.').Last()); _table = _schema.FindTable(_tableName); _commandBuilder.SetText(GetSelectClause(_tableName)); }