コード例 #1
0
        /// <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));
            }
        }
コード例 #2
0
        /// <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);
            }
        }