public DateTimeFieldMapping(string fieldName, string indexName, DataMapping mapping, bool isNullable, string dbType, object defaultValue, bool isIdentity, bool isPrimaryKey) : base(typeof(DateTime), fieldName, indexName, mapping, isNullable, dbType) { if (isIdentity) { throw new LightDataException(string.Format(SR.DataMappingUnsupportIdentityFieldType, ObjectType, fieldName, ObjectType)); } IsPrimaryKey = isPrimaryKey; var nullType = Type.GetType("System.Nullable`1", true); NullableType = nullType.MakeGenericType(ObjectType); _minValue = default(DateTime); if (defaultValue != null) { var defaultValueType = defaultValue.GetType(); if (defaultValueType == typeof(DefaultTime)) { var defaultTime = (DefaultTime)defaultValue; _defaultTimeFunction = DefaultTimeFunction.GetFunction(defaultTime); if (defaultTime == DefaultTime.TimeStamp || defaultTime == DefaultTime.UtcTimeStamp) { _isTimeStamp = true; } _defaultValue = _defaultTimeFunction; } else if (defaultValueType == typeof(DateTime)) { _defaultValue = defaultValue; } else if (defaultValueType == typeof(string)) { var str = defaultValue as string; if (DateTime.TryParse(str, out var dt)) { _defaultValue = dt; } else { throw new LightDataException(string.Format(SR.DefaultValueError, ObjectType, fieldName, ObjectType)); } } } }
public PrimitiveFieldMapping(Type type, string fieldName, string indexName, DataMapping mapping, bool isNullable, string dbType, object defaultValue, bool isIdentity, bool isPrimaryKey) : base(type, fieldName, indexName, mapping, isNullable, dbType) { if (type != typeof(string)) { Type itemstype = Type.GetType("System.Nullable`1"); _nullableType = itemstype.MakeGenericType(type); } else { _nullableType = type; } if (defaultValue != null) { Type defaultValueType = defaultValue.GetType(); if (_typeCode == TypeCode.DateTime) { if (defaultValueType == typeof(DefaultTime)) { DefaultTime defaultTime = (DefaultTime)defaultValue; this._defaultTimeFunction = DefaultTimeFunction.GetFunction(defaultTime); if (defaultTime == DefaultTime.TimeStamp || defaultTime == DefaultTime.UtcTimeStamp) { isTimeStamp = true; } this._defaultValue = this._defaultTimeFunction; } else if (defaultValueType == typeof(DateTime)) { this._defaultValue = defaultValue; } else if (defaultValueType == typeof(string)) { string str = defaultValue as string; if (DateTime.TryParse(str, out DateTime dt)) { this._defaultValue = dt; } } } else if (defaultValueType == type) { this._defaultValue = defaultValue; } else { this._defaultValue = Convert.ChangeType(defaultValue, type); } } if (isIdentity) { if (_typeCode == TypeCode.Int32 || _typeCode == TypeCode.Int64 || _typeCode == TypeCode.UInt32 || _typeCode == TypeCode.UInt64) { _isIdentity = true; } else { throw new LightDataException(string.Format(SR.DataMappingUnsupportIdentityFieldType, ObjectType, fieldName, type)); } } _isPrimaryKey = isPrimaryKey; switch (_typeCode) { case TypeCode.String: _minValue = string.Empty; break; case TypeCode.Boolean: _minValue = false; break; case TypeCode.Byte: _minValue = byte.MinValue; break; case TypeCode.SByte: _minValue = MinSByte; break; case TypeCode.DateTime: _minValue = DateTime.MinValue; break; case TypeCode.Char: _minValue = Char.MinValue; break; case TypeCode.Int16: _minValue = MinInt16; break; case TypeCode.Int32: _minValue = MinInt32; break; case TypeCode.Int64: _minValue = MinInt64; break; case TypeCode.UInt16: _minValue = UInt16.MinValue; break; case TypeCode.UInt32: _minValue = UInt32.MinValue; break; case TypeCode.UInt64: _minValue = UInt64.MinValue; break; case TypeCode.Decimal: _minValue = MinDecimal; break; case TypeCode.Single: _minValue = MinSingle; break; case TypeCode.Double: _minValue = MinDouble; break; } }