Example #1
0
        public override string[] GenerateSql(MigrationHistoryBuilder migrationsAffected, IGraphVisitor graph)
        {
            string createTable;
            string head = $"CREATE TABLE [{DatabaseName}].[{SchemaName}].[{TableName}]";
            var    optimizableMigrations = _definitions
                                           .SelectMany(m => graph.PullPrerequisitesForward(m, this, CanOptimize))
                                           .ToImmutableList();

            if (optimizableMigrations.Any())
            {
                var definitions = optimizableMigrations
                                  .OfType <TableDefinitionMigration>()
                                  .Select(d => d.GenerateDefinitionSql());
                createTable = $"{head}({string.Join(",", definitions)})";
            }
            else
            {
                createTable = head;
            }

            string[] sql =
            {
                createTable
            };
            migrationsAffected.AppendAll(optimizableMigrations);

            return(sql);
        }
        public override string[] GenerateSql(EvolutionHistoryBuilder genesAffected, IGraphVisitor graph)
        {
            var optimizableGenes = _modifications
                                   .SelectMany(m => graph.PullPrerequisitesForward(m, this, CanOptimize))
                                   .ToImmutableList();

            if (optimizableGenes.Any())
            {
                genesAffected.AppendAll(optimizableGenes);

                if (optimizableGenes.OfType <DropColumnGene>().Any())
                {
                    return(new string[0]);
                }
            }

            return(CreateColumnSql());
        }