void Generate(EnableChangeTrackingForDatabaseOperation operation, IModel model, MigrationCommandListBuilder builder)
        {
            var sqlHelper = Dependencies.SqlGenerationHelper;

            var autoCleanUp = operation.AutoCleanup ? "ON" : "OFF";

            builder
            .Append("ALTER DATABASE ")
            .Append(sqlHelper.DelimitIdentifier(Dependencies.CurrentContext.Context.Database.GetDbConnection().Database))
            .Append(" SET CHANGE_TRACKING = ON ")
            .Append($"(CHANGE_RETENTION = {operation.RetentionDays} DAYS, AUTO_CLEANUP = {autoCleanUp})")
            .AppendLine(sqlHelper.StatementTerminator)
            .EndCommand(true);
        }
        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();
        }
    }