protected virtual void OnValidateSetAutoIncrement(bool value) { if (value == true && this.Table != null && this.Table.Rows.Count > 0 && CremaDataTypeUtility.CanUseAutoIncrement(this.DataType) == false) { throw new ArgumentException($"{this.DataType.GetTypeName()} 은 {nameof(AutoIncrement)}가 지원되지 않는 타입입니다."); } }
public override void EndLoadData() { base.EndLoadData(); if (this.autoIncrements != null) { for (var i = 0; i < this.autoIncrements.Length; i++) { var column = this.Columns[i]; if (this.autoIncrements[i] == false || CremaDataTypeUtility.CanUseAutoIncrement(column.DataType) == false || column.DefaultValue != DBNull.Value) { continue; } column.AutoIncrement = true; } this.autoIncrements = null; } }
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()} 타입으로 변환할 수 없습니다."); } }