コード例 #1
0
 private OrderByExpression PropertyToOrderBy(FieldOrder field, DatabaseMapper mapper)
 {
     return(new OrderByExpression(
                new Column(
                    TableNameOrAlias(mapper, field.Field.DeclaringType),
                    mapper.GetColumnName(field.Field)), field.Direction));
 }
コード例 #2
0
 private SetValue PropertyToSetValue(FieldValue sv, DatabaseMapper mapper)
 {
     return(new SetValue(
                new Column(
                    mapper.GetTableName(sv.Field.DeclaringType),
                    mapper.GetColumnName(sv.Field)),
                sv.Value));
 }
コード例 #3
0
 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) : "*")
                ));
 }
コード例 #4
0
 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));
     }
 }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
 private Column PropertyToGroupBy(PropertyInfo prop, DatabaseMapper mapper)
 {
     return(new Column(
                TableNameOrAlias(mapper, prop.DeclaringType),
                mapper.GetColumnName(prop)));
 }