/// <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; }
public virtual Parameter Add(string parameterName, GenericDbType dbType, object value) { Parameter p = new Parameter(parameterName, dbType, value); this.Add(p); return(p); }
public virtual Parameter Add(string parameterName, GenericDbType dbType, string sourceColumn) { Parameter p = new Parameter(parameterName, dbType, sourceColumn); this.Add(p); return(p); }
public Parameter(string parameterName, GenericDbType type) : base() { ParameterName = parameterName; SourceColumn = parameterName; Value = null; GenericDbType = type; }
public Parameter(string parameterName, GenericDbType type, string sourceColumn, object value) : base() { ParameterName = parameterName; SourceColumn = sourceColumn; Value = value; GenericDbType = type; }
/// <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); }
/// <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); }
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); } }
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); }