Beispiel #1
0
        protected override void EnsureSchema(string schema, SqlBatchBuilder batchBuilder)
        {
            Check.NotNull(batchBuilder, "batchBuilder");

            if (string.IsNullOrEmpty(schema) ||
                schema.Equals("dbo", StringComparison.OrdinalIgnoreCase) ||
                GeneratedSchemas.Contains(schema))
            {
                return;
            }

            batchBuilder
            .Append("IF schema_id(")
            .Append(GenerateLiteral(schema))
            .AppendLine(") IS NULL");

            using (batchBuilder.Indent())
            {
                CreateSchema(schema, batchBuilder);
            }

            batchBuilder.AppendLine();

            GeneratedSchemas.Add(schema);
        }
Beispiel #2
0
        public virtual void Generate(
            [NotNull] CreateTableOperation operation,
            [CanBeNull] IModel model,
            [NotNull] SqlBatchBuilder builder)
        {
            Check.NotNull(operation, nameof(operation));
            Check.NotNull(builder, nameof(builder));

            builder
            .Append("CREATE TABLE ")
            .Append(_sql.DelimitIdentifier(operation.Name, operation.Schema))
            .AppendLine(" (");

            using (builder.Indent())
            {
                for (var i = 0; i < operation.Columns.Count; i++)
                {
                    var column = operation.Columns[i];
                    ColumnDefinition(column, model, builder);

                    if (i != operation.Columns.Count - 1)
                    {
                        builder.AppendLine(",");
                    }
                }

                if (operation.PrimaryKey != null)
                {
                    builder.AppendLine(",");
                    PrimaryKeyConstraint(operation.PrimaryKey, model, builder);
                }

                foreach (var uniqueConstraint in operation.UniqueConstraints)
                {
                    builder.AppendLine(",");
                    UniqueConstraint(uniqueConstraint, model, builder);
                }

                foreach (var foreignKey in operation.ForeignKeys)
                {
                    builder.AppendLine(",");
                    ForeignKeyConstraint(foreignKey, model, builder);
                }

                builder.AppendLine();
            }

            builder.Append(")");
        }
        public virtual void Generate([NotNull] CopyDataOperation copyDataOperation, [NotNull] SqlBatchBuilder batchBuilder)
        {
            Check.NotNull(copyDataOperation, "copyDataOperation");
            Check.NotNull(batchBuilder, "batchBuilder");

            batchBuilder
            .Append("INSERT INTO ")
            .Append(DelimitIdentifier(copyDataOperation.TargetTableName))
            .Append(" ( ")
            .Append(copyDataOperation.TargetColumnNames.Select(DelimitIdentifier).Join())
            .AppendLine(" )");

            using (batchBuilder.Indent())
            {
                batchBuilder
                .Append("SELECT ")
                .Append(copyDataOperation.SourceColumnNames.Select(DelimitIdentifier).Join())
                .Append(" FROM ")
                .Append(DelimitIdentifier(copyDataOperation.SourceTableName));
            }
        }
        public virtual void Generate([NotNull] CreateTableOperation createTableOperation, [NotNull] SqlBatchBuilder batchBuilder)
        {
            Check.NotNull(createTableOperation, "createTableOperation");
            Check.NotNull(batchBuilder, "batchBuilder");

            EnsureSchema(createTableOperation.TableName.Schema, batchBuilder);

            batchBuilder
            .Append("CREATE TABLE ")
            .Append(DelimitIdentifier(createTableOperation.TableName))
            .AppendLine(" (");

            using (batchBuilder.Indent())
            {
                GenerateColumns(createTableOperation, batchBuilder);

                GenerateTableConstraints(createTableOperation, batchBuilder);
            }

            batchBuilder
            .AppendLine()
            .Append(")");
        }