public bool IsTableTemporal(string tableName, string schema = "dbo")
        {
            string sqlTemplateContent = SqlTemplateProcessor.Process(SqlTemplates.SqlTemplates.IsDatabaseTableTemporal,
                                                                     new Dictionary <string, string> {
                { Constants.TableWithSchemaPlaceholder, $"{schema}.{tableName}" }
            });

            int numberOfRowsAffected = -1;

            // Querying SELECT statements using the classic ADO.NET way until Entity Framework Core team provide a better way to query non-entity records.
            var connection = context.Database.GetDbConnection();

            if (connection.State != ConnectionState.Open)
            {
                connection.Open();
            }

            var command = connection.CreateCommand();

            command.CommandText = sqlTemplateContent;

            var reader = command.ExecuteReader();

            if (reader.Read())
            {
                numberOfRowsAffected = reader.GetInt32(0);
            }

            if (connection.State == ConnectionState.Open)
            {
                connection.Close();
            }

            return(numberOfRowsAffected > 0);
        }
        /// <inheritdoc />
        public override string Generate()
        {
            string sql = SqlTemplateProcessor.Process(SqlTemplates.SqlTemplates.CreateTemporalTable,
                                                      new Dictionary <string, string>
            {
                { Constants.TableWithSchemaPlaceholder, TableWithSchema },
                { Constants.TableNamePlaceholder, tableName },
                { Constants.HistoryTableNamePlaceholder, HistoryTableName },
                { Constants.SystemTimeConstraintPlaceholder, SysTimeConstraint }
            });

            return(sql);
        }