protected override void Generate(MigrationOperation operation, IModel model, MigrationCommandListBuilder builder) { Action generateAction = operation switch { EnableChangeTrackingForDatabaseOperation op => () => Generate(op, model, builder), DisableChangeTrackingForDatabaseOperation op => () => Generate(op, model, builder), EnableChangeTrackingForTableOperation op => () => Generate(op, model, builder), DisableChangeTrackingForTableOperation op => () => Generate(op, model, builder), _ => () => base.Generate(operation, model, builder) }; generateAction(); } }
void Generate(EnableChangeTrackingForTableOperation operation, IModel model, MigrationCommandListBuilder builder) { //TODO detect if operation.TrackColumns has changed and re-create? var tableName = operation.Schema == null ? operation.Name : $"{operation.Schema}.{operation.Name}"; var sqlHelper = Dependencies.SqlGenerationHelper; builder .Append("ALTER TABLE ") .Append(sqlHelper.DelimitIdentifier(tableName)) .Append(" ENABLE CHANGE_TRACKING"); if (operation.TrackColumns) { builder.Append(" WITH (TRACK_COLUMNS_UPDATED = ON)"); } builder.AppendLine(sqlHelper.StatementTerminator) .EndCommand(); }