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))); }
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(); }
/// <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));