/// <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); }
/// <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); }
/// <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); }