Beispiel #1
0
        private static ISupportAdditionalFeatures GetColumn <TNext, TNextFk>(IColumnOptionSyntax <TNext, TNextFk> expression) where TNext : IFluentSyntax where TNextFk : IFluentSyntax
        {
            if (expression is IColumnExpressionBuilder cast1)
            {
                return(cast1.Column);
            }

            throw new InvalidOperationException(UnsupportedMethodMessage(nameof(IdentityGeneration), nameof(IColumnExpressionBuilder)));
        }
Beispiel #2
0
 private static TNext SetIdentity <TNext, TNextFk>(
     IColumnOptionSyntax <TNext, TNextFk> expression,
     object seed,
     int increment,
     ISupportAdditionalFeatures castColumn)
     where TNext : IFluentSyntax where TNextFk : IFluentSyntax
 {
     return(expression.Identity());
 }
 /// <summary>
 /// Makes a column an Identity column using the specified seed and increment values.
 /// </summary>
 /// <param name="expression">Column on which to apply the identity.</param>
 /// <param name="seed">Starting value of the identity.</param>
 /// <param name="increment">Increment value of the identity.</param>
 /// <returns></returns>
 public static TNext Identity<TNext, TNextFk>(this IColumnOptionSyntax<TNext, TNextFk> expression, 
     int seed, int increment)
     where TNext : IFluentSyntax
     where TNextFk : IFluentSyntax
 {
     ISupportAdditionalFeatures castColumn = GetColumn(expression);
     castColumn.AddAdditionalFeature(IdentitySeed, seed);
     castColumn.AddAdditionalFeature(IdentityIncrement, increment);
     return expression.Identity();
 }
Beispiel #4
0
        /// <summary>
        /// Makes a column an Identity column using the specified seed and increment values with bigint support.
        /// </summary>
        /// <param name="expression">Column on which to apply the identity.</param>
        /// <param name="seed">Starting value of the identity.</param>
        /// <param name="increment">Increment value of the identity.</param>
        /// <returns></returns>
        public static TNext Identity <TNext, TNextFk>(
            this IColumnOptionSyntax <TNext, TNextFk> expression,
            long seed,
            int increment)
            where TNext : IFluentSyntax where TNextFk : IFluentSyntax
        {
            ISupportAdditionalFeatures castColumn = GetColumn(expression);

            return(SetIdentity(expression, seed, increment, castColumn));
        }
        /// <summary>
        /// Makes a column an Identity column using the specified generation type, seed and increment values with bigint support.
        /// </summary>
        /// <param name="expression">Column on which to apply the identity.</param>
        /// <param name="generation">The generation type</param>
        /// <param name="startWith">Starting value of the identity.</param>
        /// <param name="incrementBy">Increment value of the identity.</param>
        /// <returns></returns>
        public static TNext Identity <TNext, TNextFk>(
            this IColumnOptionSyntax <TNext, TNextFk> expression,
            OracleGenerationType generation,
            long startWith,
            int incrementBy)
            where TNext : IFluentSyntax where TNextFk : IFluentSyntax
        {
            var castColumn = GetColumn(expression);

            return(SetIdentity(expression, generation, startWith, incrementBy, minValue: null, maxValue: null, castColumn));
        }
        private static TNext SetIdentity <TNext, TNextFk>(IColumnOptionSyntax <TNext, TNextFk> expression, PostgresGenerationType?generation, PostgresIdentityModificationType modificationType, ISupportAdditionalFeatures castColumn)
            where TNext : IFluentSyntax
            where TNextFk : IFluentSyntax
        {
            if (generation.HasValue)
            {
                castColumn.AdditionalFeatures[IdentityGeneration] = generation;
            }

            castColumn.AdditionalFeatures[IdentityModificationType] = modificationType;

            return(expression.Identity());
        }
 private static TNext SetIdentity <TNext, TNextFk>(
     IColumnOptionSyntax <TNext, TNextFk> expression,
     OracleGenerationType generation,
     long?startWith,
     int?incrementBy,
     long?minValue,
     long?maxValue,
     ISupportAdditionalFeatures castColumn)
     where TNext : IFluentSyntax where TNextFk : IFluentSyntax
 {
     castColumn.AdditionalFeatures[IdentityGeneration]  = generation;
     castColumn.AdditionalFeatures[IdentityStartWith]   = startWith;
     castColumn.AdditionalFeatures[IdentityIncrementBy] = incrementBy;
     castColumn.AdditionalFeatures[IdentityMinValue]    = minValue;
     castColumn.AdditionalFeatures[IdentityMaxValue]    = maxValue;
     return(expression.Identity());
 }
        private static ISupportAdditionalFeatures GetColumn<TNext, TNextFk>(IColumnOptionSyntax<TNext, TNextFk> expression)
            where TNext : IFluentSyntax
            where TNextFk : IFluentSyntax
        {
            CreateTableExpressionBuilder cast1 = expression as CreateTableExpressionBuilder;
            if (cast1 != null) return cast1.CurrentColumn;

            AlterTableExpressionBuilder cast2 = expression as AlterTableExpressionBuilder;
            if (cast2 != null) return cast2.CurrentColumn;

            AlterColumnExpressionBuilder cast3 = expression as AlterColumnExpressionBuilder;
            if (cast3 != null) return cast3.GetColumnForType();

            CreateColumnExpressionBuilder cast4 = expression as CreateColumnExpressionBuilder;
            if (cast4 != null) return cast4.GetColumnForType();

            throw new InvalidOperationException("The seeded identity method can only be called on a valid object.");
        }
        public static void ApplyColumnOptions <TNext, TNextFk>(IColumnOptionSyntax <TNext, TNextFk> builder, ColumnProperty columnProperty, object defaultValue)
            where TNext : IFluentSyntax
            where TNextFk : IFluentSyntax
        {
            if (defaultValue != null)
            {
                builder.WithDefaultValue(defaultValue);
            }

            if (columnProperty.IsSelected(ColumnProperty.Identity))
            {
                builder.Identity();
            }
            if (columnProperty.IsSelected(ColumnProperty.PrimaryKey))
            {
                builder.PrimaryKey();
            }
            if (columnProperty.IsSelected(ColumnProperty.Unsigned))
            {
                // Not supported, but is included in PrimaryKeyWithIdentity, and so it can't throw a NotSupportedException
            }
            if (columnProperty.IsSelected(ColumnProperty.Unique))
            {
                builder.Unique();
            }
            if (columnProperty.IsSelected(ColumnProperty.ForeignKey))
            {
                builder.ForeignKey();
            }

            if (columnProperty.IsSelected(ColumnProperty.NotNull))
            {
                builder.NotNullable();
            }
            else
            {
                builder.Nullable();
            }
        }
 /// <summary>
 /// Sets the column's identity generation attribute.  To change or remove an existing one, use Alter.Column instead of Alter.Table.AlterColumn
 /// </summary>
 /// <typeparam name="TNext"></typeparam>
 /// <typeparam name="TNextFk"></typeparam>
 /// <param name="expression"></param>
 /// <param name="generation"></param>
 /// <returns>The next step</returns>
 public static TNext Identity <TNext, TNextFk>(this IColumnOptionSyntax <TNext, TNextFk> expression, PostgresGenerationType generation)
     where TNext : IFluentSyntax
     where TNextFk : IFluentSyntax
 => SetIdentity(expression, generation, PostgresIdentityModificationType.Add, GetColumn(expression));