public void Can_detect_removed_foreign_keys() { var modelBuilder = new DbModelBuilder(); var model1 = modelBuilder.Build(ProviderInfo); modelBuilder.Entity <Order>(); var model2 = modelBuilder.Build(ProviderInfo); var operations = new EdmModelDiffer().Diff( model2.GetModel(), model1.GetModel()); Assert.Equal(4, operations.Count()); Assert.Equal(2, operations.OfType <DropTableOperation>().Count()); Assert.Equal(1, operations.OfType <DropIndexOperation>().Count()); // drop fks before indexes Assert.True( operations.Select( (o, i) => new { o, i }).Single(a => a.o is DropForeignKeyOperation).i < operations.Select( (o, i) => new { o, i }).Single(a => a.o is DropIndexOperation).i); var dropForeignKeyOperation = operations.OfType <DropForeignKeyOperation>().Single(); Assert.Equal("ordering.Orders", dropForeignKeyOperation.PrincipalTable); Assert.Equal("dbo.OrderLines", dropForeignKeyOperation.DependentTable); Assert.Equal("OrderId", dropForeignKeyOperation.DependentColumns.Single()); var inverse = (AddForeignKeyOperation)dropForeignKeyOperation.Inverse; Assert.Equal("ordering.Orders", inverse.PrincipalTable); Assert.Equal("OrderId", inverse.PrincipalColumns.Single()); Assert.Equal("dbo.OrderLines", inverse.DependentTable); Assert.Equal("OrderId", inverse.DependentColumns.Single()); }
public void Can_detect_added_foreign_keys() { var modelBuilder = new DbModelBuilder(); var model1 = modelBuilder.Build(ProviderInfo); modelBuilder.Entity <Order>(); var model2 = modelBuilder.Build(ProviderInfo); var operations = new EdmModelDiffer().Diff( model1.GetModel(), model2.GetModel()); Assert.Equal(4, operations.Count()); Assert.Equal(2, operations.OfType <CreateTableOperation>().Count()); Assert.Equal(1, operations.OfType <CreateIndexOperation>().Count()); // create fk indexes first Assert.True( operations.Select( (o, i) => new { o, i }).Single(a => a.o is CreateIndexOperation).i < operations.Select( (o, i) => new { o, i }).Single(a => a.o is AddForeignKeyOperation).i); var addForeignKeyOperation = operations.OfType <AddForeignKeyOperation>().Single(); Assert.Equal("ordering.Orders", addForeignKeyOperation.PrincipalTable); Assert.Equal("OrderId", addForeignKeyOperation.PrincipalColumns.Single()); Assert.Equal("dbo.OrderLines", addForeignKeyOperation.DependentTable); Assert.Equal("OrderId", addForeignKeyOperation.DependentColumns.Single()); Assert.True(addForeignKeyOperation.CascadeDelete); }
public void Can_detect_removed_foreign_keys() { var modelBuilder = new DbModelBuilder(); var model1 = modelBuilder.Build(ProviderInfo); modelBuilder.Entity<Order>(); var model2 = modelBuilder.Build(ProviderInfo); var operations = new EdmModelDiffer().Diff( model2.GetModel(), model1.GetModel()); Assert.Equal(4, operations.Count()); Assert.Equal(2, operations.OfType<DropTableOperation>().Count()); Assert.Equal(1, operations.OfType<DropIndexOperation>().Count()); // drop fks before indexes Assert.True( operations.Select( (o, i) => new { o, i }).Single(a => a.o is DropForeignKeyOperation).i < operations.Select( (o, i) => new { o, i }).Single(a => a.o is DropIndexOperation).i); var dropForeignKeyOperation = operations.OfType<DropForeignKeyOperation>().Single(); Assert.Equal("ordering.Orders", dropForeignKeyOperation.PrincipalTable); Assert.Equal("dbo.OrderLines", dropForeignKeyOperation.DependentTable); Assert.Equal("OrderId", dropForeignKeyOperation.DependentColumns.Single()); var inverse = (AddForeignKeyOperation)dropForeignKeyOperation.Inverse; Assert.Equal("ordering.Orders", inverse.PrincipalTable); Assert.Equal("OrderId", inverse.PrincipalColumns.Single()); Assert.Equal("dbo.OrderLines", inverse.DependentTable); Assert.Equal("OrderId", inverse.DependentColumns.Single()); }
public void Can_detect_added_foreign_keys() { var modelBuilder = new DbModelBuilder(); var model1 = modelBuilder.Build(ProviderInfo); modelBuilder.Entity<Order>(); var model2 = modelBuilder.Build(ProviderInfo); var operations = new EdmModelDiffer().Diff( model1.GetModel(), model2.GetModel()); Assert.Equal(4, operations.Count()); Assert.Equal(2, operations.OfType<CreateTableOperation>().Count()); Assert.Equal(1, operations.OfType<CreateIndexOperation>().Count()); // create fk indexes first Assert.True( operations.Select( (o, i) => new { o, i }).Single(a => a.o is CreateIndexOperation).i < operations.Select( (o, i) => new { o, i }).Single(a => a.o is AddForeignKeyOperation).i); var addForeignKeyOperation = operations.OfType<AddForeignKeyOperation>().Single(); Assert.Equal("ordering.Orders", addForeignKeyOperation.PrincipalTable); Assert.Equal("OrderId", addForeignKeyOperation.PrincipalColumns.Single()); Assert.Equal("dbo.OrderLines", addForeignKeyOperation.DependentTable); Assert.Equal("OrderId", addForeignKeyOperation.DependentColumns.Single()); Assert.True(addForeignKeyOperation.CascadeDelete); }
public void Can_detect_changed_primary_key_when_pk_column_facets_changed() { var modelBuilder = new DbModelBuilder(); modelBuilder.Entity<PkEntity1>(); var model1 = modelBuilder.Build(ProviderInfo); modelBuilder = new DbModelBuilder(); modelBuilder.Entity<PkEntity1>().Property(e => e.Id).HasMaxLength(42); var model2 = modelBuilder.Build(ProviderInfo); var operations = new EdmModelDiffer().Diff(model1.GetModel(), model2.GetModel()); Assert.Equal(8, operations.Count()); Assert.Equal( new[] { typeof(DropForeignKeyOperation), typeof(DropIndexOperation), typeof(DropPrimaryKeyOperation), typeof(AlterColumnOperation), typeof(AlterColumnOperation), typeof(AddPrimaryKeyOperation), typeof(CreateIndexOperation), typeof(AddForeignKeyOperation) }, operations.Select(o => o.GetType())); }