private string BuildTemporalTableSqlFromEntityTypeConfiguration(IEntityType entityType, bool appendSeparator) { StringBuilder sqlBuilder = new StringBuilder(); var relationalEntityType = context.Model.FindEntityType(entityType.Name); if (relationalEntityType is IEntityType) { string tableName = relationalEntityType.GetTableName(); string schema = relationalEntityType.GetSchema() ?? "dbo"; bool isEntityConfigurationTemporal = TemporalEntitiesCache.IsEntityConfigurationTemporal(entityType); bool isEntityTemporalInDatabase = tableHelper.IsTableTemporal(tableName, schema); ITemporalTableSqlGenerator temporalTableSqlGenerator = temporalTableSqlGeneratorFactory .CreateInstance(isEntityConfigurationTemporal, isEntityTemporalInDatabase, tableName, schema); string temporalTableSql = temporalTableSqlGenerator.Generate(); if (!string.IsNullOrWhiteSpace(temporalTableSql)) { sqlBuilder.AppendLine(temporalTableSql); if (appendSeparator) { sqlBuilder.AppendLine(new string('-', 100)); } } } return(sqlBuilder.ToString()); }
/// <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); }