/// <summary>
        /// Retorna o Type por este valor
        /// </summary>
        /// <param name="type">Tipo esperado</param>
        /// <returns></returns>
        public static Type GetTypeValue(this GenericDbType type)
        {
            switch (type)
            {
            case GenericDbType.Integer:
                return(typeof(int));

            case GenericDbType.Float:
                return(typeof(float));

            case GenericDbType.Boolean:
                return(typeof(bool));

            case GenericDbType.Date:
            case GenericDbType.Time:
            case GenericDbType.DateTime:
            case GenericDbType.TimeStamp:
                return(typeof(DateTime));

            case GenericDbType.Bit:
            case GenericDbType.Byte:
                return(typeof(byte));

            case GenericDbType.Object:
                return(typeof(object));

            case GenericDbType.String:
            case GenericDbType.Unknown:
            default:
                return(typeof(string));
            }
        }
 /// <summary>
 /// Instancia o atributo
 /// </summary>
 /// <param name="fieldName">Nome do campo </param>
 /// <param name="value">valor do campo</param>
 /// <param name="type">Tipo de dado do campo</param>
 public DefaultValueAttribute(string fieldName, object value, GenericDbType type)
     : base()
 {
     Type      = type;
     FieldName = fieldName;
     Value     = value;
 }
示例#3
0
        public virtual Parameter Add(string parameterName, GenericDbType dbType, object value)
        {
            Parameter p = new Parameter(parameterName, dbType, value);

            this.Add(p);
            return(p);
        }
示例#4
0
        public virtual Parameter Add(string parameterName, GenericDbType dbType, string sourceColumn)
        {
            Parameter p = new Parameter(parameterName, dbType, sourceColumn);

            this.Add(p);
            return(p);
        }
示例#5
0
 public Parameter(string parameterName, GenericDbType type)
     : base()
 {
     ParameterName = parameterName;
     SourceColumn  = parameterName;
     Value         = null;
     GenericDbType = type;
 }
示例#6
0
 public Parameter(string parameterName, GenericDbType type, string sourceColumn, object value)
     : base()
 {
     ParameterName = parameterName;
     SourceColumn  = sourceColumn;
     Value         = value;
     GenericDbType = type;
 }
示例#7
0
        /// <summary>
        /// Cria um parâmetro com base nas informações passadas e retorna
        /// </summary>
        /// <param name="tableDefinition">Definição da tabela</param>
        /// <param name="fieldName">Nome que o campo deverá ter</param>
        /// <param name="parameterName">Nome do parâmetro para o campo</param>
        /// <param name="value">Valor do campo</param>
        /// <param name="insert">Se true, os parâmeros fields e values estarão preparados para o insert, caso contrário, update</param>
        /// <returns></returns>
        protected virtual Parameter CreateParameter(string fieldName,
                                                    string parameterName,
                                                    object value,
                                                    bool insert)
        {
            Parameter result = new Parameter();

            result.SourceColumn  = fieldName;
            result.ParameterName = parameterName;
            GenericDbType dbType = GenericDbType.Unknown;

            if (value is IMappingType)
            {
                value = (value as IMappingType).ConvertToDbValue();
            }
            else if (value is DateTime)
            {
                DateTime d = DateTime.Parse(value.ToString());

                if (d <= DateTime.MinValue)
                {
                    value = DBNull.Value;
                }
                else
                {
                    value = d;
                }

                dbType = GenericDbType.DateTime;
            }
            else if (value is Enum)
            {
                value  = (int)value;
                dbType = GenericDbType.Integer;
            }

            if (value == null)
            {
                value = DBNull.Value;
            }

            if (dbType == GenericDbType.Unknown)
            {
                dbType = dbType.DetectTypeFromValue(value);
            }

            result.Value         = value;
            result.GenericDbType = dbType;

            return(result);
        }
示例#8
0
 /// <summary>
 /// 创建一个新的列定义.
 /// </summary>
 /// <param name="name">列名称.</param>
 /// <param name="dataType">数据类型.</param>
 /// <param name="size">数据的长度(某些数据类型指定该长度可能会导致错误).</param>
 /// <param name="notNull">不允许为空则为 true,否则应为 false .</param>
 /// <param name="unique">该列的值是否唯一.</param>
 /// <param name="pk">该列是否为主键(将多个列设定为主键时将自动产生联合主键).</param>
 /// <param name="Default">列的默认值(要指定当前日期时间为默认值时可使用 Fun.Now() 函数,若为所有二进制类型的列指定默认值将引发异常).</param>
 /// <param name="identity">自动增长设置.</param>
 /// <param name="fk">外键设置.</param>
 /// <returns></returns>
 public static DbTableColumnDefinition New(string name, GenericDbType dataType, int size = 0, bool notNull = false, bool unique = false, bool pk = false, object Default = null, DbColumnIdentity identity = null, DbForeignKey fk = null)
 {
     return(new DbTableColumnDefinition {
         Name = name,
         DataType = dataType,
         Size = size,
         NotNull = notNull,
         Default = Default,
         Identity = identity,
         PrimaryKey = pk,
         ForeignKey = fk,
         Unique = unique
     });
 }
        /// <summary>
        /// Detecta o tipo genérico pelo valor informado
        /// </summary>
        /// <param name="type">valor do tipo GenericDbType</param>
        /// <param name="value">valor que será passado ao SGBD</param>
        /// <returns></returns>
        public static GenericDbType DetectTypeFromValue(this GenericDbType type, object value)
        {
            if (value is Enum)
            {
                return(GenericDbType.Integer);
            }

            if (value is System.SByte ||
                value is System.Byte)
            {
                return(GenericDbType.Byte);
            }

            if (value is System.Int16 ||
                value is System.UInt16 ||
                value is System.Int32 ||
                value is System.UInt32 ||
                value is System.Int64 ||
                value is System.UInt64)
            {
                return(GenericDbType.Integer);
            }

            if (value is System.Double ||
                value is System.Decimal ||
                value is System.Single)
            {
                return(GenericDbType.Float);
            }

            if (value is System.String ||
                value is System.Char)
            {
                return(GenericDbType.String);
            }

            if (value is System.Boolean)
            {
                return(GenericDbType.Boolean);
            }

            if (value is System.DateTime)
            {
                return(GenericDbType.DateTime);
            }

            return(GenericDbType.Unknown);
        }
示例#10
0
        public DbType ToDbType(GenericDbType value)
        {
            switch (value)
            {
            case GenericDbType.Integer:
                return(DbType.Int32);

            case GenericDbType.Float:
                return(DbType.Double);

            case GenericDbType.Boolean:
                if (Unimake.Data.Generic.Configuration.DataGenericSettings.Settings.UseBoolAsInt)
                {
                    return(DbType.Int16);
                }
                return(DbType.Boolean);

            case GenericDbType.Date:
            case GenericDbType.Time:
            case GenericDbType.TimeStamp:
            case GenericDbType.DateTime:
                return(DbType.DateTime);

            case GenericDbType.String:
                return(DbType.String);

            case GenericDbType.Bit:
                return(DbType.Boolean);

            case GenericDbType.Byte:
                return(DbType.Byte);

            case GenericDbType.Object:
                return(DbType.Object);

            case GenericDbType.Unknown:
                return(DbType.Object);

            default:
                return(DbType.String);
            }
        }
示例#11
0
        public GenericDbType ToGenericDbType(string type)
        {
            GenericDbType ret = GenericDbType.String;

            if (Utilities.IsNumeric(type))
            {
                int t = 0;
                int.TryParse(type, out t);
                ret = ToGenericDbType((DbType)t);
            }
            else
            {
                type = type.ToUpper().Split(new string[] { " " }, StringSplitOptions.None)[0];

                if (type.Contains("("))
                {
                    type = type.Split(new string[] { "(" }, StringSplitOptions.None)[0];
                }

                switch (type)
                {
                case "_BYTE":
                case "BYTE":
                case "BYTEA":
                case "_BYTEA":
                    ret = GenericDbType.Byte;
                    break;

                case "BOOL":
                case "BOOLEAN":
                    ret = GenericDbType.Boolean;
                    break;

                case "NUMERIC":
                case "DECIMAL":
                case "FLOAT4":
                case "_FLOAT4":
                case "REAL":
                    ret = GenericDbType.Float;
                    break;

                case "TIMETZ":
                    ret = GenericDbType.Time;
                    break;

                case "DATE":
                    ret = GenericDbType.Date;
                    break;

                case "TIMESTAMPTZ":
                case "TIMESTAMP":
                case "TIME":
                case "DATETIME":
                    ret = GenericDbType.TimeStamp;
                    break;

                case "TEXT":
                case "_TEXT":
                case "VARCHAR":
                case "BPCHAR":
                case "CHAR":
                case "_CHAR":
                case "CHARACTER":
                case "CHARACTER VARYING":
                    ret = GenericDbType.String;
                    break;

                case "INT4":
                case "INT2":
                case "INT8":
                case "_INT4":
                case "_INT2":
                case "_INT8":
                case "BIGINT":
                case "SMALLINT":
                case "INTEGER":
                case "INT":
                    ret = GenericDbType.Integer;
                    break;

                default:
                    ret = GenericDbType.String;
                    break;
                }
            }

            return(ret);
        }