Exemple #1
0
        public IColumnBuilder AddColumn(IColumnConfig column)
        {
            var builder = this.CreateColumn(column);

            this.Expressions.Add(builder);
            return(builder);
        }
Exemple #2
0
        public IBinaryExpressionBuilder AddColumn(IColumnConfig column)
        {
            var expression = this.Fragment <IBinaryExpressionBuilder>();
            var parameter  = this.CreateParameter(
                Conventions.ParameterName(column),
                column.ColumnType.Type,
                column.ColumnType.Size,
                column.ColumnType.Precision,
                column.ColumnType.Scale,
                ParameterDirection.Input,
                false,
                column,
                DatabaseQueryParameterFlags.EntityRead
                );

            expression.Left     = this.CreateColumn(column);
            expression.Operator = this.CreateOperator(QueryOperator.Equal);
            if (column.IsConcurrencyCheck)
            {
                expression.Right = this.CreateBinary(
                    parameter,
                    QueryOperator.Plus,
                    this.CreateConstant(1)
                    );
            }
            else
            {
                expression.Right = parameter;
            }
            this.Expressions.Add(expression);
            return(expression);
        }
Exemple #3
0
 public object this[IColumnConfig column]
 {
     get
     {
         return(this[column.Identifier]);
     }
 }
Exemple #4
0
 protected virtual IColumnBuilder VisitColumn(IColumnConfig column)
 {
     return(this.Peek.Write(this.Peek.CreateColumn(column).With(builder =>
     {
         builder.Alias = column.Identifier;
         builder.Direction = this.Direction;
     })));
 }
Exemple #5
0
 public IBinaryExpressionBuilder GetColumn(IColumnConfig leftColumn, IColumnConfig rightColumn)
 {
     return(this.GetExpression <IBinaryExpressionBuilder>(
                builder =>
                builder.Left is IColumnBuilder && ColumnComparer.ColumnConfig.Equals((builder.Left as IColumnBuilder).Column, leftColumn) &&
                builder.Right is IColumnBuilder && ColumnComparer.ColumnConfig.Equals((builder.Right as IColumnBuilder).Column, rightColumn)
                ));
 }
Exemple #6
0
        public IColumnBuilder AddColumn(IColumnConfig column)
        {
            var expression = this.CreateColumn(column);

            expression.Alias = column.Identifier;
            this.Expressions.Add(expression);
            return(expression);
        }
Exemple #7
0
 public IColumnBuilder CreateColumn(IColumnConfig column)
 {
     if (column == null)
     {
         throw new NotImplementedException();
     }
     return(this.Fragment <IColumnBuilder>().With(builder => builder.Column = column));
 }
Exemple #8
0
 public object CreateValue(ITableConfig table, IColumnConfig column, object item)
 {
     switch (column.ColumnType.Type)
     {
     case DbType.Guid:
         return(SequentialGuid.New());
     }
     return(column.DefaultValue);
 }
Exemple #9
0
        public IBinaryExpressionBuilder AddColumn(IColumnConfig leftColumn, IColumnConfig rightColumn)
        {
            var expression = this.Fragment <IBinaryExpressionBuilder>();

            expression.Left     = this.CreateColumn(leftColumn);
            expression.Operator = this.CreateOperator(QueryOperator.Equal);
            expression.Right    = this.CreateColumn(rightColumn);
            this.Expressions.Add(expression);
            return(expression);
        }
Exemple #10
0
 public bool TryCreateColumn(IColumnSelector selector, out IColumnConfig column)
 {
     column = Factories.Column.Create(this, selector);
     if (!ColumnValidator.Validate(this.Config.Database, this, column))
     {
         return(false);
     }
     column = this.Columns.AddOrUpdate(column.Identifier, column);
     this.Reset();
     return(true);
 }
Exemple #11
0
 public static bool Validate(IDatabase database, ITableConfig table, IColumnConfig column, ITransactionSource transaction = null)
 {
     if (string.IsNullOrEmpty(column.Identifier))
     {
         return(false);
     }
     if (table.Flags.HasFlag(TableFlags.ValidateSchema) && !column.Table.Config.Database.Schema.ColumnExists(column.Table.TableName, column.ColumnName, transaction))
     {
         return(false);
     }
     return(true);
 }
Exemple #12
0
 public virtual IBinaryExpressionBuilder CreateConstraint(IColumnConfig leftColumn, IColumnConfig rightColumn)
 {
     return(this.Fragment <IBinaryExpressionBuilder>().With(builder =>
     {
         if (leftColumn != null)
         {
             builder.Left = builder.CreateColumn(leftColumn);
         }
         builder.Operator = builder.CreateOperator(QueryOperator.Equal);
         if (rightColumn != null)
         {
             builder.Right = builder.CreateColumn(rightColumn);
         }
     }));
 }
Exemple #13
0
 public bool Equals(IColumnConfig other)
 {
     if (other == null)
     {
         return(false);
     }
     if ((TableConfig)this.Table != (TableConfig)other.Table)
     {
         return(false);
     }
     if (!string.Equals(this.ColumnName, other.ColumnName, StringComparison.OrdinalIgnoreCase))
     {
         return(false);
     }
     return(true);
 }
Exemple #14
0
        public IParameterBuilder AddParameter(IColumnConfig column)
        {
            var expression = this.CreateParameter(
                Conventions.ParameterName(column),
                column.ColumnType.Type,
                column.ColumnType.Size,
                column.ColumnType.Precision,
                column.ColumnType.Scale,
                ParameterDirection.Input,
                false,
                column,
                DatabaseQueryParameterFlags.EntityRead
                );

            this.Expressions.Add(expression);
            return(expression);
        }
Exemple #15
0
        public IBinaryExpressionBuilder AddColumn(IColumnConfig column)
        {
            var expression = this.Fragment <IBinaryExpressionBuilder>();

            expression.Left     = this.CreateColumn(column);
            expression.Operator = this.CreateOperator(QueryOperator.Equal);
            expression.Right    = this.CreateParameter(
                Conventions.ParameterName(column),
                column.ColumnType.Type,
                column.ColumnType.Size,
                column.ColumnType.Precision,
                column.ColumnType.Scale,
                ParameterDirection.Input,
                false,
                column,
                DatabaseQueryParameterFlags.EntityRead
                );
            this.Expressions.Add(expression);
            return(expression);
        }
Exemple #16
0
        public bool Populate(object item, IColumnConfig column, IDatabaseReaderRecord record)
        {
            if (column.Setter == null)
            {
                return(false);
            }
            var value = default(object);

            if (record.TryGetValue(column, out value))
            {
                if (value == null || DBNull.Value.Equals(value))
                {
                    value = null;
                }
                column.Setter(
                    item,
                    this.Database.Translation.GetLocalValue(column.ColumnType.Type, value)
                    );
                return(true);
            }
            return(false);
        }
Exemple #17
0
 public object this[IColumnConfig column]
 {
     get
     {
         if (!this.Contains(column))
         {
             throw new InvalidOperationException(string.Format("No such column \"{0}\".", column));
         }
         var name      = Conventions.ParameterName(column);
         var parameter = this.Parameters[name] as IDataParameter;
         if (parameter.Value != null && !DBNull.Value.Equals(parameter.Value))
         {
             return(this.Database.Translation.GetLocalValue(column.ColumnType.Type, parameter.Value));
         }
         else
         {
             return(null);
         }
     }
     set
     {
         if (!this.Contains(column))
         {
             throw new InvalidOperationException(string.Format("No such column \"{0}\".", column));
         }
         var name      = Conventions.ParameterName(column);
         var parameter = this.Parameters[name] as IDataParameter;
         if (value != null)
         {
             parameter.Value = this.Database.Translation.GetRemoteValue(column.ColumnType.Type, value);
         }
         else
         {
             parameter.Value = DBNull.Value;
         }
     }
 }
Exemple #18
0
 public bool Contains(IColumnConfig column)
 {
     return(this.Parameters.Contains(Conventions.ParameterName(column)));
 }
Exemple #19
0
 public bool IsNull(IColumnConfig column)
 {
     return(this.IsNull(column.Identifier));
 }
Exemple #20
0
 public bool TryGetValue(IColumnConfig column, out object value)
 {
     return(this.TryGetValue(column.Identifier, out value) || this.TryGetValue(column.ColumnName, out value));
 }
Exemple #21
0
 public T Get <T>(IColumnConfig column)
 {
     return(this.Get <T>(column.Identifier));
 }
Exemple #22
0
 public bool Contains(IColumnConfig column)
 {
     return(this.Contains(column.Identifier));
 }
Exemple #23
0
 public static bool IsKey(IColumnConfig column, object key)
 {
     return(key != null && !DBNull.Value.Equals(key) && !key.Equals(column.DefaultValue));
 }
Exemple #24
0
 protected virtual void VisitRelation(ICreateBuilder expression, IRelationBuilder relation, ITableConfig leftTable, ITableConfig rightTable, IColumnConfig leftColumn, IColumnConfig rightColumn)
 {
     this.Builder.AppendFormat("{0} ", this.Database.QueryFactory.Dialect.ALTER);
     this.Builder.AppendFormat("{0} ", this.Database.QueryFactory.Dialect.TABLE);
     this.Builder.AppendFormat("{0} ", this.Database.QueryFactory.Dialect.Identifier(rightTable.TableName));
     this.Builder.AppendFormat("{0} ", this.Database.QueryFactory.Dialect.ADD);
     this.Builder.AppendFormat("{0} ", this.Database.QueryFactory.Dialect.CONSTRAINT);
     this.Builder.AppendFormat("{0} ", this.Database.QueryFactory.Dialect.Identifier(Conventions.RelationName(leftTable, rightTable)));
     this.Builder.AppendFormat("{0} ", this.Database.QueryFactory.Dialect.FOREIGN_KEY);
     this.Builder.AppendFormat("{0} ", this.Database.QueryFactory.Dialect.OPEN_PARENTHESES);
     this.Builder.AppendFormat("{0} ", this.Database.QueryFactory.Dialect.Identifier(rightColumn.ColumnName));
     this.Builder.AppendFormat("{0} ", this.Database.QueryFactory.Dialect.CLOSE_PARENTHESES);
     this.Builder.AppendFormat("{0} ", this.Database.QueryFactory.Dialect.REFERENCES);
     this.Builder.AppendFormat("{0} ", this.Database.QueryFactory.Dialect.Identifier(leftTable.TableName));
     this.Builder.AppendFormat("{0} ", this.Database.QueryFactory.Dialect.OPEN_PARENTHESES);
     this.Builder.AppendFormat("{0} ", this.Database.QueryFactory.Dialect.Identifier(leftColumn.ColumnName));
     this.Builder.AppendFormat("{0} ", this.Database.QueryFactory.Dialect.CLOSE_PARENTHESES);
 }
Exemple #25
0
 public IParameterBuilder CreateParameter(string name, DbType type, int size, byte precision, byte scale, ParameterDirection direction, bool isDeclared, IColumnConfig column, DatabaseQueryParameterFlags flags)
 {
     if (string.IsNullOrEmpty(name))
     {
         throw new NotImplementedException();
     }
     return(this.Fragment <IParameterBuilder>().With(builder =>
     {
         builder.Name = name;
         builder.Type = type;
         builder.Size = size;
         builder.Precision = precision;
         builder.Scale = scale;
         builder.Direction = direction;
         builder.IsDeclared = isDeclared;
         builder.Column = column;
         builder.Flags = flags;
     }));
 }
Exemple #26
0
        protected virtual bool TryGetColumn(MemberInfo member, Expression expression, out IColumnConfig result)
        {
            var property = member as PropertyInfo;

            if (property == null)
            {
                result = default(IColumnConfig);
                return(false);
            }
            var table = this.Database.Config.GetTable(TableConfig.By(expression.Type));

            if (table == null)
            {
                result = default(IColumnConfig);
                return(false);
            }
            result = table.GetColumn(ColumnConfig.By(property));
            return(result != null);
        }
Exemple #27
0
 public IColumnBuilder GetColumn(IColumnConfig column)
 {
     return(this.GetExpression <IColumnBuilder>(builder => ColumnComparer.ColumnConfig.Equals(builder.Column, column)));
 }
Exemple #28
0
 public static T Get <T>(this IDatabaseReaderRecord record, IColumnConfig column)
 {
     return(record.Get <T>(column.Identifier));
 }
 public DatabaseQueryParameter(string name, DbType type, int size, byte precision, byte scale, ParameterDirection direction, bool isDeclared, IColumnConfig column, DatabaseQueryParameterFlags flags)
 {
     this.Name       = name;
     this.Type       = type;
     this.Size       = size;
     this.Precision  = precision;
     this.Scale      = scale;
     this.Direction  = direction;
     this.IsDeclared = isDeclared;
     this.Column     = column;
     this.Flags      = flags;
 }
Exemple #30
0
        public IParameterBuilder AddParameter(string name, DbType type, int size, byte precision, byte scale, ParameterDirection direction, bool isDeclared, IColumnConfig column, DatabaseQueryParameterFlags flags)
        {
            var expression = this.CreateParameter(name, type, size, precision, scale, direction, isDeclared, column, flags);

            this.Expressions.Add(expression);
            return(expression);
        }