/// <summary> /// Generates a SQL fragment for the default constraint of a column. /// </summary> /// <param name="defaultValue"> The default value for the column. </param> /// <param name="defaultValueSql"> The SQL expression to use for the column's default constraint. </param> /// <param name="builder"> The command builder to use to add the SQL fragment. </param> protected override void DefaultValue( object defaultValue, string defaultValueSql, MigrationCommandListBuilder builder) { Check.NotNull(builder, nameof(builder)); if (defaultValueSql != null) { builder .Append(" DEFAULT ") .Append(defaultValueSql); } else if (defaultValue != null) { var typeMapping = Dependencies.TypeMappingSource.GetMappingForValue(defaultValue); // Jet does not support defaults for hh:mm:ss in create table statement bool isDateTimeValue = defaultValue.GetType().UnwrapNullableType() == typeof(DateTime) || defaultValue.GetType().UnwrapNullableType() == typeof(DateTimeOffset); builder .Append(" DEFAULT ") .Append( isDateTimeValue ? JetDateTimeTypeMapping.GenerateSqlLiteral(defaultValue, true) : typeMapping.GenerateSqlLiteral(defaultValue)); } }
/// <summary> /// Generates a SQL fragment for the default constraint of a column. /// </summary> /// <param name="defaultValue"> The default value for the column. </param> /// <param name="defaultValueSql"> The SQL expression to use for the column's default constraint. </param> /// <param name="columnType"> Store/database type of the column. </param> /// <param name="builder"> The command builder to use to add the SQL fragment. </param> protected override void DefaultValue( [CanBeNull] object defaultValue, [CanBeNull] string defaultValueSql, [CanBeNull] string columnType, [NotNull] MigrationCommandListBuilder builder) { Check.NotNull(builder, nameof(builder)); if (defaultValueSql != null) { builder .Append(" DEFAULT ") .Append(defaultValueSql); } else if (defaultValue != null) { var typeMapping = columnType != null ? Dependencies.TypeMappingSource.FindMapping(defaultValue.GetType(), columnType) : null; if (typeMapping == null) { typeMapping = Dependencies.TypeMappingSource.GetMappingForValue(defaultValue); } defaultValue = defaultValue.GetType().IsTimeRelatedType() ? JetDateTimeTypeMapping.GenerateNonNullSqlLiteral(defaultValue, true, _options.EnableMillisecondsSupport) : typeMapping.GenerateSqlLiteral(defaultValue); builder .Append(" DEFAULT ") .Append(defaultValue); } }