コード例 #1
0
        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}'은(는) 잘못된 기본값입니다.");
                        }
                    }
                }
            }
        }
コード例 #2
0
ファイル: ColumnInfo.cs プロジェクト: teize001/Crema
 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);
 }
コード例 #3
0
ファイル: InternalColumnBase.cs プロジェクト: teize001/Crema
 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()} 타입으로 변환할 수 없습니다.");
         }
     }
 }
コード例 #4
0
ファイル: InternalColumnBase.cs プロジェクト: teize001/Crema
        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()} 타입으로 변환할 수 없습니다.");
            }
        }