protected override void Generate(DropTableOperation operation, IModel model, MigrationCommandListBuilder builder, bool terminate = true)
        {
            string tableName = operation.Name;
            string schema    = operation.Schema ?? "dbo";

            bool isEntityTemporalInDatabase = tableHelper.IsTableTemporal(tableName, schema);

            if (isEntityTemporalInDatabase)
            {
                ITemporalTableSqlGenerator temporalTableSqlGenerator = new DropTemporalTableGenerator(tableName, schema);
                string temporalTableSql = temporalTableSqlGenerator.Generate();

                builder.AppendLine(temporalTableSql);
            }

            base.Generate(operation, model, builder, terminate);
        }
        /// <inheritdoc />
        public ITemporalTableSqlGenerator CreateInstance(
            bool isEntityConfigurationTemporal,
            bool isEntityTemporalInDatabase,
            string tableName,
            string schemaName)
        {
            ITemporalTableSqlGenerator temporalTableSqlGenerator = null;

            if (isEntityConfigurationTemporal && !isEntityTemporalInDatabase)
            {
                temporalTableSqlGenerator = new CreateTemporalTableGenerator(tableName, schemaName);
            }
            else if (!isEntityConfigurationTemporal && isEntityTemporalInDatabase)
            {
                temporalTableSqlGenerator = new DropTemporalTableGenerator(tableName, schemaName);
            }
            else
            {
                temporalTableSqlGenerator = new NoSqlTemporalTableGenerator(tableName, schemaName);
            }

            return(temporalTableSqlGenerator);
        }