public void Index_should_add_create_index_operation_to_model() { var createTableOperation = new CreateTableOperation("T"); createTableOperation.Columns.Add( new ColumnModel(PrimitiveTypeKind.Guid) { Name = "Foo", ApiPropertyInfo = typeof(Columns).GetDeclaredProperty("Foo") }); createTableOperation.Columns.Add( new ColumnModel(PrimitiveTypeKind.Guid) { Name = "Bar", ApiPropertyInfo = typeof(Columns).GetDeclaredProperty("Bar") }); var migration = new TestMigration(); var tableBuilder = new TableBuilder <Columns>(createTableOperation, migration); tableBuilder.Index(c => new { c.Foo, c.Bar }, unique: true); Assert.Equal(1, migration.Operations.Count()); var createIndexOperation = migration.Operations.Cast <CreateIndexOperation>().Single(); Assert.Equal("T", createIndexOperation.Table); Assert.True(createIndexOperation.IsUnique); Assert.Equal("Foo", createIndexOperation.Columns.First()); Assert.Equal("Bar", createIndexOperation.Columns.Last()); Assert.False(createIndexOperation.IsClustered); Assert.True(createIndexOperation.HasDefaultName); Assert.Equal(createIndexOperation.DefaultName, createIndexOperation.Name); tableBuilder.Index(c => new { c.Foo, c.Bar }, clustered: true, name: "Goo"); Assert.Equal(2, migration.Operations.Count()); createIndexOperation = migration.Operations.Cast <CreateIndexOperation>().Last(); Assert.Equal("T", createIndexOperation.Table); Assert.False(createIndexOperation.IsUnique); Assert.Equal("Foo", createIndexOperation.Columns.First()); Assert.Equal("Bar", createIndexOperation.Columns.Last()); Assert.True(createIndexOperation.IsClustered); Assert.False(createIndexOperation.HasDefaultName); Assert.Equal("Goo", createIndexOperation.Name); }
public void PrimaryKey_should_set_key_columns_name_and_clustered() { var createTableOperation = new CreateTableOperation("T"); createTableOperation.Columns.Add( new ColumnModel(PrimitiveTypeKind.Guid) { Name = "Foo", ApiPropertyInfo = typeof(Columns).GetDeclaredProperty("Foo") }); createTableOperation.Columns.Add( new ColumnModel(PrimitiveTypeKind.Guid) { Name = "Bar", ApiPropertyInfo = typeof(Columns).GetDeclaredProperty("Bar") }); createTableOperation.Columns.Add( new ColumnModel(PrimitiveTypeKind.Guid) { Name = "Baz" }); var tableBuilder = new TableBuilder <Columns>(createTableOperation, new TestMigration()); tableBuilder.PrimaryKey( c => new { c.Bar, c.Foo }, name: "PK_Custom", clustered: false); Assert.Equal(2, createTableOperation.PrimaryKey.Columns.Count()); Assert.Equal("Bar", createTableOperation.PrimaryKey.Columns.First()); Assert.Equal("Foo", createTableOperation.PrimaryKey.Columns.Last()); Assert.Equal("PK_Custom", createTableOperation.PrimaryKey.Name); Assert.False(createTableOperation.PrimaryKey.IsClustered); }
public void ForeignKey_should_create_and_add_fk_model() { var createTableOperation = new CreateTableOperation("T"); createTableOperation.Columns.Add( new ColumnModel(PrimitiveTypeKind.Guid) { Name = "Foo", ApiPropertyInfo = typeof(Columns).GetDeclaredProperty("Foo") }); createTableOperation.Columns.Add( new ColumnModel(PrimitiveTypeKind.Guid) { Name = "Bar", ApiPropertyInfo = typeof(Columns).GetDeclaredProperty("Bar") }); var migration = new TestMigration(); var tableBuilder = new TableBuilder <Columns>(createTableOperation, migration); tableBuilder.ForeignKey( "P", c => new { c.Foo, c.Bar }, true, "my_fk"); Assert.Equal(1, migration.Operations.Count()); var addForeignKeyOperation = migration.Operations.Cast <AddForeignKeyOperation>().Single(); Assert.Equal("P", addForeignKeyOperation.PrincipalTable); Assert.Equal("Foo", addForeignKeyOperation.DependentColumns.First()); Assert.Equal("Bar", addForeignKeyOperation.DependentColumns.Last()); Assert.True(addForeignKeyOperation.CascadeDelete); Assert.Equal("my_fk", addForeignKeyOperation.Name); }
public void Index_should_add_create_index_operation_to_model() { var createTableOperation = new CreateTableOperation("T"); createTableOperation.Columns.Add( new ColumnModel(PrimitiveTypeKind.Guid) { Name = "Foo" }); createTableOperation.Columns.Add( new ColumnModel(PrimitiveTypeKind.Guid) { Name = "Bar" }); var migration = new TestMigration(); var tableBuilder = new TableBuilder <Columns>(createTableOperation, migration); tableBuilder.Index( c => new { c.Foo, c.Bar }, unique: true, clustered: false); Assert.Equal(1, migration.Operations.Count()); var createIndexOperation = migration.Operations.Cast <CreateIndexOperation>().Single(); Assert.Equal("T", createIndexOperation.Table); Assert.True(createIndexOperation.IsUnique); Assert.Equal("Foo", createIndexOperation.Columns.First()); Assert.Equal("Bar", createIndexOperation.Columns.Last()); Assert.False(createIndexOperation.IsClustered); }