コード例 #1
0
        public DropIndexOperation(CreateIndexOperation inverse, object anonymousArguments = null)
            : base(anonymousArguments)
        {
            Check.NotNull(inverse, "inverse");

            _inverse = inverse;
        }
コード例 #2
0
        public DropIndexOperation(CreateIndexOperation inverse, object anonymousArguments = null)
            : base(anonymousArguments)
        {
            Contract.Requires(inverse != null);

            _inverse = inverse;
        }
コード例 #3
0
        public void DefaultName_is_restricted_to_128_chars()
        {
            var createIndexOperation = new CreateIndexOperation { Table = "T" };

            createIndexOperation.Columns.Add(new string('C', 150));

            Assert.Equal(128, createIndexOperation.DefaultName.Length);
        }
コード例 #4
0
 protected override void Generate( CreateIndexOperation createIndexOperation )
 {
     if( createIndexOperation.IsUnique )
     {
         createIndexOperation.Name = createIndexOperation.Name.Replace( @"IX_", @"UQ_" );
     }
     base.Generate( createIndexOperation );
 }
コード例 #5
0
        /// <summary>
        /// Gets an operation to create an index on the foreign key column(s).
        /// </summary>
        /// <returns> An operation to add the index. </returns>
        public virtual CreateIndexOperation CreateCreateIndexOperation()
        {
            var createIndexOperation
                = new CreateIndexOperation
                      {
                          Table = DependentTable
                      };

            DependentColumns.Each(c => createIndexOperation.Columns.Add(c));

            return createIndexOperation;
        }
        protected override void Generate(CreateIndexOperation createIndexOperation)
        {
            if (createIndexOperation == null)
            {
                throw new ArgumentNullException("createIndexOperation");
            }

            //if (createIndexOperation.Table.Contains("AspNetRoles") && createIndexOperation.Name.Contains("RoleNameIndex"))
            //{
            //    createIndexOperation.Name = "IX_Host_Name";
            //}
            if (createIndexOperation.Table.Contains("AspNetUsers") && createIndexOperation.Name.Contains("UserNameIndex"))
            {
                createIndexOperation.Name = "IX_Host_Name";
            }

            base.Generate(createIndexOperation);
        }
コード例 #7
0
        public void Can_get_and_set_table_and_column_info()
        {
            var createIndexOperation
                = new CreateIndexOperation
                {
                Table    = "T",
                IsUnique = true,
                Name     = "Custom"
                };

            createIndexOperation.Columns.Add("C");

            Assert.Equal("T", createIndexOperation.Table);
            Assert.Equal("C", createIndexOperation.Columns.Single());
            Assert.Equal("Custom", createIndexOperation.Name);
            Assert.True(createIndexOperation.IsUnique);
            Assert.Equal("IX_C", createIndexOperation.DefaultName);
            Assert.False(createIndexOperation.HasDefaultName);
        }
コード例 #8
0
        public void Inverse_should_return_drop_index_operation()
        {
            var createIndexOperation
                = new CreateIndexOperation
                      {
                          Table = "T",
                          IsUnique = true,
                          Name = "Custom"
                      };

            createIndexOperation.Columns.Add("C");

            var inverse = (DropIndexOperation)createIndexOperation.Inverse;

            Assert.Same(createIndexOperation, inverse.Inverse);
            Assert.Equal("T", inverse.Table);
            Assert.Equal("Custom", inverse.Name);
            Assert.Equal("C", inverse.Columns.Single());
        }
コード例 #9
0
        public void Can_get_and_set_table_and_column_info()
        {
            var createIndexOperation
                = new CreateIndexOperation
                      {
                          Table = "T",
                          IsUnique = true,
                          Name = "Custom"
                      };

            createIndexOperation.Columns.Add("C");

            Assert.Equal("T", createIndexOperation.Table);
            Assert.Equal("C", createIndexOperation.Columns.Single());
            Assert.Equal("Custom", createIndexOperation.Name);
            Assert.True(createIndexOperation.IsUnique);
            Assert.Equal("IX_C", createIndexOperation.DefaultName);
            Assert.False(createIndexOperation.HasDefaultName);
        }
コード例 #10
0
        public void Inverse_should_return_drop_index_operation()
        {
            var createIndexOperation
                = new CreateIndexOperation
                {
                Table    = "T",
                IsUnique = true,
                Name     = "Custom"
                };

            createIndexOperation.Columns.Add("C");

            var inverse = (DropIndexOperation)createIndexOperation.Inverse;

            Assert.Same(createIndexOperation, inverse.Inverse);
            Assert.Equal("T", inverse.Table);
            Assert.Equal("Custom", inverse.Name);
            Assert.Equal("C", inverse.Columns.Single());
        }
コード例 #11
0
        /// <summary>
        /// Generates SQL for a <see cref="CreateIndexOperation" />.
        /// Generated SQL should be added using the Statement method.
        /// </summary>
        /// <param name="createIndexOperation"> The operation to produce SQL for. </param>
        protected virtual void Generate(CreateIndexOperation createIndexOperation)
        {
            Check.NotNull(createIndexOperation, "createIndexOperation");

            using (var writer = Writer())
            {
                writer.Write("CREATE ");

                if (createIndexOperation.IsUnique)
                {
                    writer.Write("UNIQUE ");
                }

                if (createIndexOperation.IsClustered)
                {
                    writer.Write("CLUSTERED ");
                }

                writer.Write("INDEX ");
                writer.Write(Quote(createIndexOperation.Name));
                writer.Write(" ON ");
                writer.Write(Name(createIndexOperation.Table));
                writer.Write("(");
                writer.Write(createIndexOperation.Columns.Join(Quote));
                writer.Write(")");

                Statement(writer);
            }
        }
コード例 #12
0
        private void Convert(CreateIndexOperation createIndexOperation)
        {
            StringBuilder sql = new StringBuilder();
            sql.Append("CREATE ");

            if (createIndexOperation.IsUnique)
                sql.Append("UNIQUE ");

            sql.Append("INDEX \"");
            sql.Append(GetTableNameFromFullTableName(createIndexOperation.Table) + "_" + createIndexOperation.Name);
            sql.Append("\" ON ");
            AppendTableName(createIndexOperation.Table, sql);
            sql.Append(" (");
            foreach (var column in createIndexOperation.Columns)
            {
                sql.Append('"');
                sql.Append(column);
                sql.Append("\",");
            }
            sql.Remove(sql.Length - 1, 1);
            sql.Append(")");
            AddStatment(sql);
        }
コード例 #13
0
        /// <summary>
        ///     Generates code to perform a <see cref="CreateIndexOperation" />.
        /// </summary>
        /// <param name="createIndexOperation"> The operation to generate code for. </param>
        /// <param name="writer"> Text writer to add the generated code to. </param>
        protected virtual void Generate(CreateIndexOperation createIndexOperation, IndentedTextWriter writer)
        {
            Check.NotNull(createIndexOperation, "createIndexOperation");
            Check.NotNull(writer, "writer");

            writer.Write("CreateIndex(");
            writer.Write(Quote(createIndexOperation.Table));
            writer.Write(", ");

            var compositeIndex = createIndexOperation.Columns.Count() > 1;

            if (compositeIndex)
            {
                writer.Write("New String() { ");
            }

            writer.Write(createIndexOperation.Columns.Join(Quote));

            if (compositeIndex)
            {
                writer.Write(" }");
            }

            if (createIndexOperation.IsUnique)
            {
                writer.Write(", unique := True");
            }

            if (!createIndexOperation.HasDefaultName)
            {
                writer.Write(", name := ");
                writer.Write(Quote(createIndexOperation.Name));
            }

            writer.WriteLine(")");
        }
コード例 #14
0
    protected override void GenerateInline(CreateIndexOperation createIndexOperation, IndentedTextWriter writer)
    {
      writer.WriteLine();
      writer.Write(".Index(");

      Generate(createIndexOperation.Columns, writer);

      writer.Write(createIndexOperation.IsUnique ? ", unique: true" : "");
      writer.Write(!createIndexOperation.HasDefaultName ? string.Format(", name: {0}", TrimSchemaPrefix(createIndexOperation.Name)) : "");

      writer.Write(")");
    }
コード例 #15
0
        public void Generate_create_table_operation_with_non_clustered_key_and_fully_configured_index()
        {
            var createTableOperation = new CreateTableOperation("Customers");
            
            var idColumn = new ColumnModel(PrimitiveTypeKind.Int32) { Name = "I.d" };
            createTableOperation.Columns.Add(idColumn);
            
            createTableOperation.PrimaryKey = new AddPrimaryKeyOperation
            {
                Name = "MyPK",
                IsClustered = false
            };
            createTableOperation.PrimaryKey.Columns.Add(idColumn.Name);

            var createIndexOperation = new CreateIndexOperation
            {
                Table = createTableOperation.Name, 
                Name = "MyIndex",
                IsClustered = true,
                IsUnique = true
            };
            createIndexOperation.Columns.Add(idColumn.Name);

            var generatedMigration
                = new CSharpMigrationCodeGenerator().Generate(
                    "Migration",
                    new MigrationOperation[]
                        {
                            createTableOperation,
                            createIndexOperation
                        },
                    "Source",
                    "Target",
                    "Foo",
                    "Bar");

            Assert.Equal(
                @"namespace Foo
{
    using System;
    using System.Data.Entity.Migrations;
    
    public partial class Bar : DbMigration
    {
        public override void Up()
        {
            CreateTable(
                ""Customers"",
                c => new
                    {
                        Id = c.Int(name: ""I.d""),
                    })
                .PrimaryKey(t => t.Id, name: ""MyPK"", clustered: false)
                .Index(t => t.Id, unique: true, clustered: true, name: ""MyIndex"");
            
        }
        
        public override void Down()
        {
            DropIndex(""Customers"", ""MyIndex"");
            DropTable(""Customers"");
        }
    }
}
",
                generatedMigration.UserCode);
        }
コード例 #16
0
        private void WriteIndexParameters(CreateIndexOperation createIndexOperation, IndentedTextWriter writer)
        {
            if (createIndexOperation.IsUnique)
            {
                writer.Write(", unique := True");
            }

            if (createIndexOperation.IsClustered)
            {
                writer.Write(", clustered := True");
            }

            if (!createIndexOperation.HasDefaultName)
            {
                writer.Write(", name := ");
                writer.Write(Quote(createIndexOperation.Name));
            }
        }
コード例 #17
0
        public void Generate_can_output_create_index_statement_clustered()
        {
            var createTableOperation = new CreateTableOperation("Customers");
            var idColumn = new ColumnModel(PrimitiveTypeKind.Int32)
                               {
                                   Name = "Id",
                                   IsNullable = true,
                                   IsIdentity = true
                               };
            createTableOperation.Columns.Add(idColumn);
            createTableOperation.Columns.Add(
                new ColumnModel(PrimitiveTypeKind.String)
                    {
                        Name = "Name",
                        IsNullable = false
                    });
            createTableOperation.PrimaryKey = new AddPrimaryKeyOperation();
            createTableOperation.PrimaryKey.Columns.Add(idColumn.Name);

            var migrationSqlGenerator = new SqlCeMigrationSqlGenerator();

            var createIndexOperation = new CreateIndexOperation
                                           {
                                               Table = createTableOperation.Name,
                                               IsUnique = true,
                                               IsClustered = true
                                           };

            createIndexOperation.Columns.Add(idColumn.Name);

            var sql
                = migrationSqlGenerator.Generate(
                    new[]
                        {
                            createIndexOperation
                        },
                    "4.0").Join(s => s.Sql, Environment.NewLine);

            Assert.Contains(
                @"CREATE UNIQUE CLUSTERED INDEX [IX_Id] ON [Customers]([Id])", sql);
        }
コード例 #18
0
        protected virtual MigrationStatement Generate(CreateIndexOperation op)
        {
            StringBuilder sb = new StringBuilder();

              sb = sb.Append("CREATE ");

              if (op.IsUnique)
              {
            sb.Append("UNIQUE ");
              }

              //index_col_name specification can end with ASC or DESC.
              // sort order are permitted for future extensions for specifying ascending or descending index value storage
              //Currently, they are parsed but ignored; index values are always stored in ascending order.

              object sort;
              op.AnonymousArguments.TryGetValue("Sort", out sort);
              var sortOrder = sort != null && sort.ToString() == "Ascending" ?
                      "ASC" : "DESC";

              sb.AppendFormat("index  `{0}` on `{1}` (", op.Name, op.Table);
              sb.Append(string.Join(",", op.Columns.Select(c => "`" + c + "` " + sortOrder)) + ") ");

              object indexTypeDefinition;
              op.AnonymousArguments.TryGetValue("Type", out indexTypeDefinition);
              var indexType = indexTypeDefinition != null && string.Compare(indexTypeDefinition.ToString(), "BTree", StringComparison.InvariantCultureIgnoreCase) > 0 ?
                      "BTREE" : "HASH";

              sb.Append("using " + indexType);

              return new MigrationStatement() { Sql = sb.ToString() };
        }
        public void GenerateCanOutputCreateIndexStatement()
        {
            var createTableOperation = new CreateTableOperation("Customers");
            var idColumn = new ColumnModel(PrimitiveTypeKind.Int32)
            {
                Name = "Id",
                IsNullable = true,
                IsIdentity = true
            };
            createTableOperation.Columns.Add(idColumn);
            createTableOperation.Columns.Add(
                new ColumnModel(PrimitiveTypeKind.String)
                {
                    Name = "Name",
                    IsNullable = false
                });
            createTableOperation.PrimaryKey = new AddPrimaryKeyOperation();
            createTableOperation.PrimaryKey.Columns.Add(idColumn.Name);

            var migrationSqlGenerator = new PostgreSqlMigrationSqlGenerator();

            var createIndexOperation = new CreateIndexOperation
            {
                Table = createTableOperation.Name,
                IsUnique = true
            };

            createIndexOperation.Columns.Add(idColumn.Name);

            var sql
                = migrationSqlGenerator.Generate(
                    new[]
                        {
                            createIndexOperation
                        },
                    "9.2").Join(s => s.Sql, Environment.NewLine);

            Assert.True(
                sql.Contains(
                    @"CREATE UNIQUE INDEX ""IX_Customers_Id"" ON ""Customers""(""Id"")"));
        }
        public void Generate_create_fully_configured_create_index_operation()
        {
            var createIndexOperation = new CreateIndexOperation
            {
                Table = "MyTable",
                Name = "MyIndex",
                IsClustered = true,
                IsUnique = true
            };
            createIndexOperation.Columns.Add("MyColumn");

            var generatedMigration
                = new VisualBasicMigrationCodeGenerator().Generate(
                    "Migration",
                    new MigrationOperation[]
                        {
                            createIndexOperation
                        },
                    "Source",
                    "Target",
                    "Foo",
                    "Bar");

            Assert.Equal(
                @"Imports System
Imports System.Data.Entity.Migrations
Imports Microsoft.VisualBasic

Namespace Foo
    Public Partial Class Bar
        Inherits DbMigration
    
        Public Overrides Sub Up()
            CreateIndex(""MyTable"", ""MyColumn"", unique := True, clustered := True, name := ""MyIndex"")
        End Sub
        
        Public Overrides Sub Down()
            DropIndex(""MyTable"", ""MyIndex"")
        End Sub
    End Class
End Namespace
",
                generatedMigration.UserCode);
        }
        public void Generate_create_table_operation_with_non_clustered_key_and_fully_configured_index()
        {
            var createTableOperation = new CreateTableOperation("Customers");

            var idColumn = new ColumnModel(PrimitiveTypeKind.Int32) { Name = "I.d" };
            createTableOperation.Columns.Add(idColumn);

            createTableOperation.PrimaryKey = new AddPrimaryKeyOperation
            {
                Name = "MyPK",
                IsClustered = false
            };
            createTableOperation.PrimaryKey.Columns.Add(idColumn.Name);

            var createIndexOperation = new CreateIndexOperation
            {
                Table = createTableOperation.Name,
                Name = "MyIndex",
                IsClustered = true,
                IsUnique = true
            };
            createIndexOperation.Columns.Add(idColumn.Name);

            var generatedMigration
                = new VisualBasicMigrationCodeGenerator().Generate(
                    "Migration",
                    new MigrationOperation[]
                        {
                            createTableOperation,
                            createIndexOperation
                        },
                    "Source",
                    "Target",
                    "Foo",
                    "Bar");

            Assert.Equal(
                @"Imports System
Imports System.Data.Entity.Migrations
Imports Microsoft.VisualBasic

Namespace Foo
    Public Partial Class Bar
        Inherits DbMigration
    
        Public Overrides Sub Up()
            CreateTable(
                ""Customers"",
                Function(c) New With
                    {
                        .Id = c.Int(name := ""I.d"")
                    }) _
                .PrimaryKey(Function(t) t.Id, name := ""MyPK"", clustered := False) _
                .Index(Function(t) t.Id, unique := True, clustered := True, name := ""MyIndex"")
            
        End Sub
        
        Public Overrides Sub Down()
            DropIndex(""Customers"", ""MyIndex"")
            DropTable(""Customers"")
        End Sub
    End Class
End Namespace
",
                generatedMigration.UserCode);
        }
コード例 #22
0
 public void TestCreateIndexOperationUnique()
 {
     var operations = new List<MigrationOperation>();
     var operation = new CreateIndexOperation();
     operation.Table = "someTable";
     operation.Name = "someIndex";
     operation.Columns.Add("column1");
     operation.Columns.Add("column2");
     operation.Columns.Add("column3");
     operation.IsUnique = true;
     operations.Add(operation);
     var statments = new NpgsqlMigrationSqlGenerator().Generate(operations, BackendVersion.ToString());
     Assert.AreEqual(1, statments.Count());
     Assert.AreEqual("CREATE UNIQUE INDEX \"someTable_someIndex\" ON \"someTable\" (\"column1\",\"column2\",\"column3\")", statments.ElementAt(0).Sql);
 }
コード例 #23
0
        public CreateIndexOperation CreateCreateIndexOperation()
        {
            var columnNames = Columns.ToArray();
            Debug.Assert(columnNames.Length > 0);
            Debug.Assert(_index.Name != null || columnNames.Length == 1);

            var operation = new CreateIndexOperation
            {
                Name = _index.Name ?? IndexOperation.BuildDefaultName(columnNames),
                Table = _table
            };

            foreach (var columnName in columnNames)
            {
                operation.Columns.Add(columnName);
            }

            if (_index.IsClusteredConfigured)
            {
                operation.IsClustered = _index.IsClustered;
            }

            if (_index.IsUniqueConfigured)
            {
                operation.IsUnique = _index.IsUnique;
            }

            return operation;
        }
コード例 #24
0
        /// <summary>
        /// Generates code to perform a <see cref="CreateIndexOperation" />.
        /// </summary>
        /// <param name="createIndexOperation"> The operation to generate code for. </param>
        /// <param name="writer"> Text writer to add the generated code to. </param>
        protected virtual void Generate(CreateIndexOperation createIndexOperation, IndentedTextWriter writer)
        {
            Check.NotNull(createIndexOperation, "createIndexOperation");
            Check.NotNull(writer, "writer");

            writer.Write("CreateIndex(");
            writer.Write(Quote(createIndexOperation.Table));
            writer.Write(", ");

            var compositeIndex = createIndexOperation.Columns.Count() > 1;

            if (compositeIndex)
            {
                writer.Write("New String() { ");
            }

            writer.Write(createIndexOperation.Columns.Join(Quote));

            if (compositeIndex)
            {
                writer.Write(" }");
            }

            WriteIndexParameters(createIndexOperation, writer);

            writer.WriteLine(")");
        }
コード例 #25
0
 protected override void Generate(CreateIndexOperation cio)
 {
     if (cio.HasDefaultName)
         cio.Name = GetIndexName(cio.Table, cio.Columns, cio.IsUnique);
     base.Generate(cio);
 }
コード例 #26
0
        /// <summary>
        /// Generates code to perform a <see cref="CreateIndexOperation" /> as part of a <see cref="CreateTableOperation" />.
        /// </summary>
        /// <param name="createIndexOperation"> The operation to generate code for. </param>
        /// <param name="writer"> Text writer to add the generated code to. </param>
        protected virtual void GenerateInline(CreateIndexOperation createIndexOperation, IndentedTextWriter writer)
        {
            Check.NotNull(createIndexOperation, "createIndexOperation");
            Check.NotNull(writer, "writer");

            writer.WriteLine(" _");
            writer.Write(".Index(");
            Generate(createIndexOperation.Columns, writer);
            WriteIndexParameters(createIndexOperation, writer);
            writer.Write(")");
        }
コード例 #27
0
        /// <summary>
        ///     Generates code to perform a <see cref = "CreateIndexOperation" /> as part of a <see cref = "CreateTableOperation" />.
        /// </summary>
        /// <param name = "createIndexOperation">The operation to generate code for.</param>
        /// <param name = "writer">Text writer to add the generated code to.</param>
        protected virtual void GenerateInline(CreateIndexOperation createIndexOperation, IndentedTextWriter writer)
        {
            Contract.Requires(createIndexOperation != null);
            Contract.Requires(writer != null);

            writer.WriteLine(" _");
            writer.Write(".Index(");
            Generate(createIndexOperation.Columns, writer);
            writer.Write(")");
        }
コード例 #28
0
        /// <summary>
        ///     Generates code to perform a <see cref = "CreateIndexOperation" />.
        /// </summary>
        /// <param name = "createIndexOperation">The operation to generate code for.</param>
        /// <param name = "writer">Text writer to add the generated code to.</param>
        protected virtual void Generate(CreateIndexOperation createIndexOperation, IndentedTextWriter writer)
        {
            //Contract.Requires(createIndexOperation != null);
            //Contract.Requires(writer != null);

            writer.Write("CreateIndex(");
            writer.Write(Quote(createIndexOperation.Table));
            writer.Write(", ");

            var compositeIndex = createIndexOperation.Columns.Count() > 1;

            if (compositeIndex)
            {
                writer.Write("New String() { ");
            }

            writer.Write(createIndexOperation.Columns.Join(Quote));

            if (compositeIndex)
            {
                writer.Write(" }");
            }

            if (createIndexOperation.IsUnique)
            {
                writer.Write(", unique := True");
            }

            if (!createIndexOperation.HasDefaultName)
            {
                writer.Write(", name := ");
                writer.Write(Quote(createIndexOperation.Name));
            }

            writer.WriteLine(")");
        }
コード例 #29
0
        public void Generate_create_fully_configured_create_index_operation()
        {
            var createIndexOperation = new CreateIndexOperation
            {
                Table = "MyTable",
                Name = "MyIndex",
                IsClustered = true,
                IsUnique = true
            };
            createIndexOperation.Columns.Add("MyColumn");

            var generatedMigration
                = new CSharpMigrationCodeGenerator().Generate(
                    "Migration",
                    new MigrationOperation[]
                        {
                            createIndexOperation
                        },
                    "Source",
                    "Target",
                    "Foo",
                    "Bar");

            Assert.Equal(
                @"namespace Foo
{
    using System;
    using System.Data.Entity.Migrations;
    
    public partial class Bar : DbMigration
    {
        public override void Up()
        {
            CreateIndex(""MyTable"", ""MyColumn"", unique: true, clustered: true, name: ""MyIndex"");
        }
        
        public override void Down()
        {
            DropIndex(""MyTable"", ""MyIndex"");
        }
    }
}
",
                generatedMigration.UserCode);
        }
コード例 #30
0
 protected override void Generate(CreateIndexOperation createIndexOperation, IndentedTextWriter writer)
 {
     createIndexOperation.Table = TrimSchemaPrefix(createIndexOperation.Table);
       base.Generate(createIndexOperation, writer);
 }
        protected override void Generate(CreateIndexOperation createIndexOperation)
        {
            string tableName, tableSchema;
            this.GetNameParts(createIndexOperation.Table, out tableSchema, out tableName);
            using (var writer = Writer())
            {

                writer.WriteLine("IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE name = '{0}' and object_id = OBJECT_ID('{1}'))\r\nBEGIN", createIndexOperation.Name, this.Name(createIndexOperation.Table));
                writer.Indent++;
                writer.Write("CREATE INDEX ");
                writer.Write(Name(createIndexOperation.Name));
                writer.Write(" ON ");
                writer.Write(Name(createIndexOperation.Table));
                writer.Write(" ( ");
                int i = 0;
                foreach (var column in createIndexOperation.Columns)
                {
                    writer.Write(column);
                    if (i < createIndexOperation.Columns.Count - 1)
                        writer.Write(", ");
                    i++;
                }
                writer.Write(" )");
                //if (((column.IsNullable.HasValue && !column.IsNullable.Value) && ((column.DefaultValue == null) && string.IsNullOrWhiteSpace(column.DefaultValueSql))) && ((!column.IsIdentity && !column.IsTimestamp) && (!column.StoreType.Equals("rowversion", StringComparison.OrdinalIgnoreCase) && !column.StoreType.Equals("timestamp", StringComparison.OrdinalIgnoreCase))))
                //{
                //    writer.Write(" DEFAULT ");
                //    if (column.Type == PrimitiveTypeKind.DateTime)
                //    {
                //        writer.Write(this.Generate(DateTime.Parse("1900-01-01 00:00:00")));
                //    }
                //    else
                //    {
                //        writer.Write(this.Generate((dynamic)column.ClrDefaultValue));
                //    }
                //}
                writer.Indent--;
                writer.Write("\r\nEND");

                Statement(writer);
            }
        }
コード例 #32
0
 protected virtual IEnumerable<MigrationStatement> Generate(CreateIndexOperation operation)
 {
     using (var writer = SqlWriter())
     {
         writer.Write("CREATE ");
         if (operation.IsUnique)
         {
             writer.Write("UNIQUE ");
         }
         writer.Write("INDEX ");
         writer.Write(Quote(string.Format("{0}_{1}", FixName(ObjectName(operation.Table)), FixName(operation.Name))));
         writer.Write(" ON ");
         writer.Write(Quote(operation.Table));
         writer.Write("(");
         WriteColumns(writer, operation.Columns.Select(Quote));
         writer.Write(")");
         yield return Statement(writer);
     }
 }
コード例 #33
0
 public DropIndexOperation(CreateIndexOperation inverse, object anonymousArguments = null)
     : base(anonymousArguments)
 {
     Check.NotNull <CreateIndexOperation>(inverse, nameof(inverse));
     this._inverse = inverse;
 }