private OrderByExpression PropertyToOrderBy(FieldOrder field, DatabaseMapper mapper) { return(new OrderByExpression( new Column( TableNameOrAlias(mapper, field.Field.DeclaringType), mapper.GetColumnName(field.Field)), field.Direction)); }
private SetValue PropertyToSetValue(FieldValue sv, DatabaseMapper mapper) { return(new SetValue( new Column( mapper.GetTableName(sv.Field.DeclaringType), mapper.GetColumnName(sv.Field)), sv.Value)); }
private SourceExpression PropertyToAggregate(FieldAggregate field, DatabaseMapper mapper) { return(new Aggregate( field.Aggregate, new Column( field.Field != null ? TableNameOrAlias(mapper, field.Field.DeclaringType) : "", field.Field != null ? mapper.GetColumnName(field.Field) : "*") )); }
private SourceExpression PropertyToSourceField(PropertyInfo prop, DatabaseMapper mapper) { if (prop != null) { return(new Column(TableNameOrAlias(mapper, prop.DeclaringType), mapper.GetColumnName(prop))); } else { return(new ConstantPart(null)); } }
public UpdateStatement CreateStatement(DatabaseMapper mapper) { var update = new UpdateStatement(); update.Target = new Table(mapper.GetTableName(this.Target)); update.SetValues.AddRange(this.SetValues.Select(sv => new SetValue(new Column(mapper.GetTableName(sv.Item1.DeclaringType), mapper.GetColumnName(sv.Item1)), sv.Item2))); foreach (var condition in StatementCreator.VisitStatementConditions(this.Conditions, mapper, false)) { update.Conditions.Add(condition); } return(update); }
public InsertStatement CreateStatement(DatabaseMapper mapper) { var insert = new InsertStatement(); insert.Target = new Table(mapper.GetTableName(this.Target)); insert.SetValues.AddRange(this.SetValues.Select(sv => new SetValue(new Column(mapper.GetColumnName(sv.Item1)), sv.Item2))); return(insert); }
public SelectStatement CreateStatement(DatabaseMapper mapper) { var select = new SelectStatement(); select.Source = new Table(mapper.GetTableName(this.Source.Type), this.Source.Alias); select.SourceFields.AddRange(this.SourceFields.Select(s => new Column(TableNameOrAlias(mapper, s.DeclaringType), mapper.GetColumnName(s)))); select.SourceFields.AddRange(this.AggregateFields.Select(s => new Aggregate(s.Item2, new Column(s.Item1 != null ? TableNameOrAlias(mapper, s.Item1.DeclaringType) : "", s.Item1 != null ? mapper.GetColumnName(s.Item1) : "*")))); select.IsAny = this.IsAny; select.IsAll = this.IsAll; select.IsDistinct = this.IsDistinct; select.StartIndex = this.StartIndex; select.Limit = this.Limit; if (this.Conditions != null) { // TODO: Need to handle columns from multiple tables... var aliasTables = !string.IsNullOrEmpty(this.Source.Alias); foreach (var condition in StatementCreator.VisitStatementConditions(this.Conditions, mapper, aliasTables)) { select.Conditions.Add(condition); } } select.OrderByFields.AddRange(this.OrderByFields.Select(s => new OrderByExpression(new Column(TableNameOrAlias(mapper, s.Item1.DeclaringType), mapper.GetColumnName(s.Item1)), s.Item2))); return(select); }
private Column PropertyToGroupBy(PropertyInfo prop, DatabaseMapper mapper) { return(new Column( TableNameOrAlias(mapper, prop.DeclaringType), mapper.GetColumnName(prop))); }