public override void ColumnDefinition( string schema, string table, string name, string type, bool nullable, object defaultValue, string defaultValueSql, string computedColumnSql, IAnnotatable annotatable, IModel model, SqlBatchBuilder builder) { base.ColumnDefinition( schema, table, name, type, nullable, defaultValue, defaultValueSql, computedColumnSql, annotatable, model, builder); var columnAnnotation = annotatable as Annotatable; var inlinePk = columnAnnotation?.FindAnnotation(SqliteAnnotationNames.Prefix + SqliteAnnotationNames.InlinePrimaryKey); if (inlinePk != null && (bool)inlinePk.Value) { builder.Append(" PRIMARY KEY"); var autoincrement = columnAnnotation.FindAnnotation(SqliteAnnotationNames.Prefix + SqliteAnnotationNames.Autoincrement); if (autoincrement != null && (bool)autoincrement.Value) { builder.Append(" AUTOINCREMENT"); } } }
public override void Generate(DropIndexOperation operation, IModel model, SqlBatchBuilder builder) { Check.NotNull(operation, nameof(operation)); Check.NotNull(builder, nameof(builder)); builder .Append("DROP INDEX ") .Append(_sql.DelimitIdentifier(operation.Name)); }
public override void Generate(RenameTableOperation operation, IModel model, SqlBatchBuilder builder) { Check.NotNull(operation, nameof(operation)); Check.NotNull(builder, nameof(builder)); if (operation.NewName != null) { builder .Append("ALTER TABLE ") .Append(_sql.DelimitIdentifier(operation.Name)) .Append(" RENAME TO ") .Append(_sql.DelimitIdentifier(operation.NewName)); } }
protected override void ColumnDefinition( string schema, string table, string name, Type clrType, string type, bool nullable, object defaultValue, string defaultValueSql, string computedColumnSql, IAnnotatable annotatable, IModel model, SqlBatchBuilder builder) { base.ColumnDefinition( schema, table, name, clrType, type, nullable, defaultValue, defaultValueSql, computedColumnSql, annotatable, model, builder); var inlinePk = annotatable[SqliteAnnotationNames.Prefix + SqliteAnnotationNames.InlinePrimaryKey] as bool?; if (inlinePk == true) { var inlinePkName = annotatable[ SqliteAnnotationNames.Prefix + SqliteAnnotationNames.InlinePrimaryKeyName] as string; if (!string.IsNullOrEmpty(inlinePkName)) { builder .Append(" CONSTRAINT ") .Append(Sql.DelimitIdentifier(inlinePkName)); } builder.Append(" PRIMARY KEY"); var autoincrement = annotatable[SqliteAnnotationNames.Prefix + SqliteAnnotationNames.Autoincrement] as bool?; if (autoincrement == true) { builder.Append(" AUTOINCREMENT"); } } }
protected override void ForeignKeyAction(ReferentialAction referentialAction, SqlBatchBuilder builder) { Check.NotNull(builder, nameof(builder)); if (referentialAction == ReferentialAction.Restrict) { builder.Append("NO ACTION"); } else { base.ForeignKeyAction(referentialAction, builder); } }
protected override void IndexTraits(MigrationOperation operation, IModel model, SqlBatchBuilder builder) { Check.NotNull(operation, nameof(operation)); Check.NotNull(builder, nameof(builder)); var clustered = operation[SqlServerAnnotationNames.Prefix + SqlServerAnnotationNames.Clustered] as bool?; if (clustered.HasValue) { builder.Append(clustered.Value ? "CLUSTERED " : "NONCLUSTERED "); } }
protected override void ColumnDefinition( string schema, string table, string name, Type clrType, string type, bool nullable, object defaultValue, string defaultValueSql, string computedColumnSql, IAnnotatable annotatable, IModel model, SqlBatchBuilder builder) { Check.NotEmpty(name, nameof(name)); Check.NotNull(clrType, nameof(clrType)); Check.NotNull(annotatable, nameof(annotatable)); Check.NotNull(builder, nameof(builder)); if (computedColumnSql != null) { builder .Append(Sql.DelimitIdentifier(name)) .Append(" AS ") .Append(computedColumnSql); return; } base.ColumnDefinition( schema, table, name, clrType, type, nullable, defaultValue, defaultValueSql, computedColumnSql, annotatable, model, builder); var valueGenerationStrategy = annotatable[ SqlServerAnnotationNames.Prefix + SqlServerAnnotationNames.ValueGenerationStrategy] as SqlServerIdentityStrategy?; if (valueGenerationStrategy == SqlServerIdentityStrategy.IdentityColumn) { builder.Append(" IDENTITY"); } }
protected override void Generate(EnsureSchemaOperation operation, IModel model, SqlBatchBuilder builder) { Check.NotNull(operation, nameof(operation)); Check.NotNull(builder, nameof(builder)); if (string.Equals(operation.Name, "DBO", StringComparison.OrdinalIgnoreCase)) { return; } builder .Append("IF SCHEMA_ID(N") .Append(Sql.GenerateLiteral(operation.Name)) .Append(") IS NULL EXEC(N'CREATE SCHEMA ") .Append(Sql.DelimitIdentifier(operation.Name)) .Append("')"); }
public override void IndexTraits(MigrationOperation operation, IModel model, SqlBatchBuilder builder) { Check.NotNull(operation, nameof(operation)); Check.NotNull(builder, nameof(builder)); var clustered = (string)operation[SqlServerAnnotationNames.Prefix + SqlServerAnnotationNames.Clustered]; if (clustered != null) { builder.Append(clustered == "True" ? "CLUSTERED " : "NONCLUSTERED "); } }