protected override void OnValidateSetDefaultValue(object value) { base.OnValidateSetDefaultValue(value); var cremaType = this.CremaType; if (cremaType != null) { if (value != null && value != DBNull.Value) { if (value is string) { cremaType.ValidateValue(value as string); } else if (CremaConvert.VerifyChangeType(value, typeof(long)) == false) { throw new ArgumentException($"'{value}'은(는) 잘못된 기본값입니다."); } else { var n = (long)CremaConvert.ChangeType(value, typeof(long)); if (cremaType.ConvertToString(n) == $"{n}") { throw new ArgumentException($"'{value}'은(는) 잘못된 기본값입니다."); } } } } }
private object GetDefaultValue(ColumnInfo columnInfo) { if (columnInfo.DefaultValue != null && CremaDataTypeUtility.IsBaseType(columnInfo.DataType) == true) { var type = CremaDataTypeUtility.GetType(columnInfo.DataType); return(CremaConvert.ChangeType(columnInfo.DefaultValue, type)); } return(columnInfo.DefaultValue); }
protected virtual void OnValidateSetDefaultValue(object value) { if (value != null && value != DBNull.Value) { if (this.AutoIncrement == true) { throw new ArgumentException($"AutoIncrement 열에 DefaultValue를 설정할 수 없습니다."); } if (CremaConvert.VerifyChangeType(value, this.DataType) == false) { throw new ArgumentException($"기본값 \"{value}\"은(는) {this.DataType.GetTypeName()} 타입으로 변환할 수 없습니다."); } } }
protected virtual void OnValidateSetDataType(Type value) { if (value == null) { throw new ArgumentNullException(nameof(value)); } if (CremaDataTypeUtility.IsBaseType(value) == false) { throw new ArgumentException(string.Format(Resources.Exception_TypeCannotBeUsed_Format, value.Name), nameof(value)); } if (this.Table != null && this.Table.Rows.Count > 0 && this.AutoIncrement == true && CremaDataTypeUtility.CanUseAutoIncrement(value) == false) { throw new ArgumentException($"AutoIncrement 를 사용중인 열에서 '{value.GetTypeName()}' 타입은 사용할 수 없습니다."); } var index = 0; if (this.Table != null) { foreach (DataRow item in this.Table.Rows) { var field = item[this]; if (field == DBNull.Value) { continue; } if (CremaConvert.VerifyChangeType(field, value) == false) { throw new FormatException($"{index}번째 값 \"{field}\"은(는) {value.GetTypeName()} 타입으로 변환할 수 없습니다."); } index++; } } if (this.DefaultValue != DBNull.Value && CremaConvert.VerifyChangeType(this.DefaultValue, value) == false) { throw new FormatException($"기본값 \"{this.DefaultValue}\"은(는) {value.GetTypeName()} 타입으로 변환할 수 없습니다."); } }