Exemple #1
0
        /// <summary>
        /// 获取包含指定实体类所对应列名对应属性的值参数对象
        /// </summary>
        /// <param name="entity">实体对象</param>
        /// <param name="column">列对象</param>
        /// <param name="dba"></param>
        /// <returns>返回包含参数值的对象实例</returns>
        private static IDbDataParameter GetDataParameterObject(Entity entity, RdbColumn column, IRawDbAccesser dba)
        {
            var parameter = dba.ParameterFactory.CreateParameter();

            parameter.ParameterName = column.Name;

            var dbType = column.Info.ColumnMeta.DataType ?? MySqlDbTypeHelper.ConvertFromCLRType(column.Info.DataType);

            parameter.DbType = dbType;
            parameter.Value  = column.ReadParameterValue(entity);
            return(parameter);
        }
Exemple #2
0
        /// <summary>
        /// 写入实体和对应的值
        /// </summary>
        /// <param name="entity">实体对象</param>
        /// <param name="value">结果值</param>
        public override void Write(Entity entity, object value)
        {
            var info = this.Info;

            if (value != null && info.IsBooleanType)
            {
                value = MySqlDbTypeHelper.ToCLRBoolean(value);
            }
            else if (value == null && info.IsStringType)
            {
                value = string.Empty;
            }
            base.Write(entity, value);
        }
Exemple #3
0
        /// <summary>
        /// 针对布尔类型和枚举类型进行特殊处理
        /// </summary>
        /// <param name="value">待转换的CLR数据类型</param>
        /// <returns>返回MySql兼容的具体数据类型</returns>
        internal static object PrepareConstraintValueInternal(object value)
        {
            if (value != DBNull.Value)
            {
                if (value is bool)
                {
                    value = MySqlDbTypeHelper.ToDbBoolean((bool)value);
                }
                else if (value.GetType().IsEnum)
                {
                    value = TypeHelper.CoerceValue(typeof(int), value);
                }
            }

            return(value);
        }