本文整理汇总了C#中System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.OfType方法的典型用法代码示例。如果您正苦于以下问题:C# EdmModelDiffer.OfType方法的具体用法?C# EdmModelDiffer.OfType怎么用?C# EdmModelDiffer.OfType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer
的用法示例。
在下文中一共展示了EdmModelDiffer.OfType方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: System_operations_are_included_when_requested
public void System_operations_are_included_when_requested()
{
var modelBuilder = new DbModelBuilder();
var model1 = modelBuilder.Build(ProviderInfo).GetModel();
modelBuilder = new DbModelBuilder();
var model2 = modelBuilder.Build(ProviderInfo).GetModel();
new HistoryRepository(ConnectionString, ProviderFactory).AppendHistoryModel(model2, ProviderInfo);
var operations = new EdmModelDiffer().Diff(model1, model2, includeSystemOperations: true);
var createTableOperation
= operations.OfType<CreateTableOperation>().Single();
Assert.True(createTableOperation.IsSystem);
operations = new EdmModelDiffer().Diff(model2, model1, includeSystemOperations: true);
var dropTableOperation
= operations.OfType<DropTableOperation>().Single();
Assert.True(dropTableOperation.IsSystem);
}
示例2: Can_detect_added_tables
public void Can_detect_added_tables()
{
var modelBuilder = new DbModelBuilder();
var model1 = modelBuilder.Build(ProviderInfo);
modelBuilder = new DbModelBuilder();
modelBuilder.Entity<OrderLine>()
.HasTableAnnotation("AT1", "VT1")
.ToTable("[foo.[]]].bar")
.Property(e => e.OrderId)
.HasColumnAnnotation("AP1", "VP1")
.HasColumnAnnotation(IndexAnnotation.AnnotationName, new IndexAnnotation(new IndexAttribute("Bella")));
var model2 = modelBuilder.Build(ProviderInfo);
var operations = new EdmModelDiffer().Diff(model1.GetModel(), model2.GetModel());
Assert.Equal(2, operations.Count());
var createTableOperation = operations.OfType<CreateTableOperation>().Single();
Assert.Equal("[foo.[]]].bar", createTableOperation.Name);
Assert.Equal("VT1", createTableOperation.Annotations["AT1"]);
var column = createTableOperation.Columns.Single(c => c.Name == "OrderId");
Assert.Null(column.Annotations["AP1"].OldValue);
Assert.Equal("VP1", column.Annotations["AP1"].NewValue);
var createIndexOperation = operations.OfType<CreateIndexOperation>().Single();
Assert.Equal("Bella", createIndexOperation.Name);
Assert.Equal("[foo.[]]].bar", createIndexOperation.Table);
Assert.Equal(new List<string> { "OrderId" }, createIndexOperation.Columns);
}
示例3: Can_detect_changed_foreign_keys_when_cascade
public void Can_detect_changed_foreign_keys_when_cascade()
{
var modelBuilder = new DbModelBuilder();
modelBuilder.Entity<Order>();
var model1 = modelBuilder.Build(ProviderInfo);
modelBuilder.Entity<Order>().HasMany(o => o.OrderLines).WithOptional().WillCascadeOnDelete(false);
var model2 = modelBuilder.Build(ProviderInfo);
var operations = new EdmModelDiffer().Diff(
model1.GetModel(), model2.GetModel());
Assert.Equal(4, operations.Count());
Assert.Equal(1, operations.OfType<DropForeignKeyOperation>().Count());
Assert.Equal(1, operations.OfType<DropIndexOperation>().Count());
Assert.Equal(1, operations.OfType<CreateIndexOperation>().Count());
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.False(addForeignKeyOperation.CascadeDelete);
}
示例4: Can_detect_added_columns
public void Can_detect_added_columns()
{
var modelBuilder = new DbModelBuilder();
modelBuilder.Entity<OrderLine>();
var model2 = modelBuilder.Build(ProviderInfo);
modelBuilder.Entity<OrderLine>().Ignore(ol => ol.OrderId);
var model1 = modelBuilder.Build(ProviderInfo);
var operations = new EdmModelDiffer().Diff(
model1.GetModel(), model2.GetModel());
Assert.Equal(1, operations.Count());
var addColumnOperation = operations.OfType<AddColumnOperation>().Single();
Assert.Equal("dbo.OrderLines", addColumnOperation.Table);
Assert.Equal("OrderId", addColumnOperation.Column.Name);
Assert.Equal(PrimitiveTypeKind.Int32, addColumnOperation.Column.Type);
Assert.False(addColumnOperation.Column.IsNullable.Value);
}
示例5: Can_detect_moved_modification_functions
public void Can_detect_moved_modification_functions()
{
var modelBuilder = new DbModelBuilder();
modelBuilder.Entity<MigrationsCustomer>().MapToStoredProcedures();
var model1 = modelBuilder.Build(ProviderInfo);
modelBuilder
.Entity<MigrationsCustomer>()
.MapToStoredProcedures(
m =>
{
m.Insert(c => c.HasName("MigrationsCustomer_Insert", "foo"));
m.Update(c => c.HasName("delete_it", "foo"));
});
var model2 = modelBuilder.Build(ProviderInfo);
var operations
= new EdmModelDiffer().Diff(model1.GetModel(), model2.GetModel());
Assert.Equal(3, operations.Count());
var moveProcedureOperations
= operations.OfType<MoveProcedureOperation>();
Assert.True(moveProcedureOperations.All(mpo => mpo.NewSchema == "foo"));
}
示例6: Can_populate_table_model_for_added_tables
public void Can_populate_table_model_for_added_tables()
{
var modelBuilder = new DbModelBuilder();
var model1 = modelBuilder.Build(ProviderInfo);
modelBuilder.Entity<MigrationsCustomer>();
var model2 = modelBuilder.Build(ProviderInfo);
var operations = new EdmModelDiffer().Diff(
model1.GetModel(), model2.GetModel());
Assert.Equal(2, operations.OfType<AddForeignKeyOperation>().Count());
var createTableOperation = operations.OfType<CreateTableOperation>().Single(t => t.Name == "ordering.Orders");
Assert.Equal(4, createTableOperation.Columns.Count());
Assert.Equal(1, createTableOperation.PrimaryKey.Columns.Count());
Assert.Equal("OrderId", createTableOperation.PrimaryKey.Columns.Single());
var customerIdColumn = createTableOperation.Columns.Single(c => c.Name == "MigrationsCustomer_Id");
Assert.Equal(PrimitiveTypeKind.Int32, customerIdColumn.Type);
Assert.Null(customerIdColumn.IsNullable);
var orderIdColumn = createTableOperation.Columns.Single(c => c.Name == "OrderId");
Assert.True(orderIdColumn.IsIdentity);
}
示例7: Can_detect_changed_columns
public void Can_detect_changed_columns()
{
var modelBuilder = new DbModelBuilder();
modelBuilder.Entity<MigrationsCustomer>();
var model1 = modelBuilder.Build(ProviderInfo);
modelBuilder.Entity<MigrationsCustomer>().Property(c => c.FullName).HasMaxLength(25).IsUnicode(false);
var model2 = modelBuilder.Build(ProviderInfo);
var operations = new EdmModelDiffer().Diff(
model1.GetModel(), model2.GetModel());
Assert.Equal(1, operations.Count());
var column = operations.OfType<AlterColumnOperation>().Single().Column;
Assert.Equal(25, column.MaxLength);
if (DatabaseProvider != DatabaseProvider.SqlServerCe)
{
Assert.False(column.IsUnicode.Value);
}
var inverse = (AlterColumnOperation)operations.OfType<AlterColumnOperation>().Single().Inverse;
Assert.NotNull(inverse);
Assert.Equal("FullName", inverse.Column.Name);
if (DatabaseProvider != DatabaseProvider.SqlServerCe)
{
Assert.Null(inverse.Column.MaxLength);
}
else
{
Assert.Equal(4000, inverse.Column.MaxLength);
}
Assert.Null(inverse.Column.IsUnicode);
}
示例8: Can_detect_timestamp_columns
public void Can_detect_timestamp_columns()
{
var modelBuilder = new DbModelBuilder();
modelBuilder.Entity<Order>();
var model2 = modelBuilder.Build(ProviderInfo);
modelBuilder = new DbModelBuilder();
modelBuilder.Entity<Order>().Ignore(o => o.Version);
var model1 = modelBuilder.Build(ProviderInfo);
var operations = new EdmModelDiffer().Diff(model1.GetModel(), model2.GetModel());
Assert.Equal(1, operations.Count());
var column = operations.OfType<AddColumnOperation>().Single().Column;
Assert.True(column.IsTimestamp);
}
示例9: Can_detect_simple_column_rename_when_entity_split
public void Can_detect_simple_column_rename_when_entity_split()
{
var modelBuilder = new DbModelBuilder();
modelBuilder.Entity<MigrationsCustomer>()
.Map(
mc =>
{
mc.Properties(
c => new
{
c.Id,
c.FullName,
c.HomeAddress,
c.WorkAddress
});
mc.ToTable("MigrationsCustomers");
})
.Map(
mc =>
{
mc.Properties(
c => new
{
c.Name
});
mc.ToTable("Customers_Split");
});
var model1 = modelBuilder.Build(ProviderInfo);
modelBuilder.Entity<MigrationsCustomer>().Property(p => p.Name).HasColumnName("col_Name");
var model2 = modelBuilder.Build(ProviderInfo);
var operations = new EdmModelDiffer().Diff(
model1.GetModel(), model2.GetModel());
Assert.Equal(1, operations.Count());
var columnRename = operations.OfType<RenameColumnOperation>().Single();
Assert.Equal("dbo.Customers_Split", columnRename.Table);
Assert.Equal("Name", columnRename.Name);
Assert.Equal("col_Name", columnRename.NewName);
}
示例10: Can_detect_simple_column_rename
public void Can_detect_simple_column_rename()
{
var modelBuilder = new DbModelBuilder();
modelBuilder.Entity<MigrationsCustomer>();
var model1 = modelBuilder.Build(ProviderInfo);
modelBuilder.Entity<MigrationsCustomer>().Property(p => p.Name).HasColumnName("col_Name");
var model2 = modelBuilder.Build(ProviderInfo);
var operations = new EdmModelDiffer().Diff(
model1.GetModel(), model2.GetModel());
Assert.Equal(1, operations.Count());
var columnRename = operations.OfType<RenameColumnOperation>().Single();
Assert.Equal("dbo.MigrationsCustomers", columnRename.Table);
Assert.Equal("Name", columnRename.Name);
Assert.Equal("col_Name", columnRename.NewName);
}
示例11: Can_detect_simple_table_rename
public void Can_detect_simple_table_rename()
{
var modelBuilder = new DbModelBuilder();
modelBuilder.Entity<MigrationsCustomer>();
var model1 = modelBuilder.Build(ProviderInfo);
modelBuilder.Entity<MigrationsCustomer>().ToTable("Customer");
var model2 = modelBuilder.Build(ProviderInfo);
var operations = new EdmModelDiffer().Diff(
model1.GetModel(), model2.GetModel());
Assert.Equal(1, operations.Count());
var tableRename = operations.OfType<RenameTableOperation>().Single();
Assert.Equal("dbo.MigrationsCustomers", tableRename.Name);
Assert.Equal("Customer", tableRename.NewName);
}
示例12: Moved_tables_should_include_create_table_operation
public void Moved_tables_should_include_create_table_operation()
{
var modelBuilder = new DbModelBuilder();
modelBuilder.Entity<MigrationsCustomer>();
var model1 = modelBuilder.Build(ProviderInfo).GetModel();
modelBuilder = new DbModelBuilder();
modelBuilder.Entity<MigrationsCustomer>().ToTable("MigrationsCustomer", "foo");
var model2 = modelBuilder.Build(ProviderInfo).GetModel();
var operations = new EdmModelDiffer().Diff(model1, model2);
var moveTableOperation
= operations.OfType<MoveTableOperation>().Single();
Assert.NotNull(moveTableOperation.CreateTableOperation);
Assert.Equal("dbo.MigrationsCustomer", moveTableOperation.Name);
Assert.Equal("foo.MigrationsCustomer", moveTableOperation.CreateTableOperation.Name);
}
示例13: Can_detect_moved_tables
public void Can_detect_moved_tables()
{
var modelBuilder = new DbModelBuilder();
modelBuilder.Entity<MigrationsCustomer>();
var model1 = modelBuilder.Build(ProviderInfo);
modelBuilder.Entity<MigrationsCustomer>().ToTable("MigrationsCustomers", "foo");
var model2 = modelBuilder.Build(ProviderInfo);
var operations = new EdmModelDiffer().Diff(
model1.GetModel(), model2.GetModel());
Assert.Equal(1, operations.Count());
var moveTableOperation = operations.OfType<MoveTableOperation>().Single();
Assert.Equal("dbo.MigrationsCustomers", moveTableOperation.Name);
Assert.Equal("foo", moveTableOperation.NewSchema);
}
示例14: Can_detect_removed_tables
public void Can_detect_removed_tables()
{
var modelBuilder = new DbModelBuilder();
modelBuilder.Entity<OrderLine>();
var model1 = modelBuilder.Build(ProviderInfo);
modelBuilder = new DbModelBuilder();
var model2 = modelBuilder.Build(ProviderInfo);
var operations = new EdmModelDiffer().Diff(
model1.GetModel(), model2.GetModel());
Assert.Equal(1, operations.Count());
var inverse = (CreateTableOperation)operations.OfType<DropTableOperation>().Single().Inverse;
Assert.NotNull(inverse);
Assert.Equal("dbo.OrderLines", inverse.Name);
Assert.Equal(8, inverse.Columns.Count());
}
示例15: Can_populate_table_model_for_added_tables
public void Can_populate_table_model_for_added_tables()
{
var modelBuilder = new DbModelBuilder();
var model1 = modelBuilder.Build(ProviderInfo);
modelBuilder.Entity<MigrationsCustomer>();
var model2 = modelBuilder.Build(ProviderInfo);
var operations
= new EdmModelDiffer()
.Diff(model1.GetModel(), model2.GetModel());
Assert.Equal(7, operations.Count());
Assert.Equal(2, operations.OfType<AddForeignKeyOperation>().Count());
var ordersCreateTableOperation
= operations.OfType<CreateTableOperation>()
.Single(t => t.Name == "ordering.Orders");
Assert.Equal(4, ordersCreateTableOperation.Columns.Count());
Assert.Equal(1, ordersCreateTableOperation.PrimaryKey.Columns.Count());
Assert.Equal("OrderId", ordersCreateTableOperation.PrimaryKey.Columns.Single());
var customerIdColumn
= ordersCreateTableOperation.Columns
.Single(c => c.Name == "MigrationsCustomer_Id");
Assert.Equal(PrimitiveTypeKind.Int32, customerIdColumn.Type);
Assert.Null(customerIdColumn.IsNullable);
Assert.Null(customerIdColumn.StoreType);
Assert.Null(customerIdColumn.Precision);
Assert.Null(customerIdColumn.Scale);
Assert.Null(customerIdColumn.MaxLength);
Assert.Null(customerIdColumn.IsFixedLength);
Assert.False(customerIdColumn.IsIdentity);
Assert.Null(customerIdColumn.IsUnicode);
Assert.False(customerIdColumn.IsTimestamp);
var orderIdColumn
= ordersCreateTableOperation.Columns
.Single(c => c.Name == "OrderId");
Assert.True(orderIdColumn.IsIdentity);
Assert.Equal(false, orderIdColumn.IsNullable);
var versionColumn
= ordersCreateTableOperation.Columns
.Single(c => c.Name == "Version");
Assert.True(versionColumn.IsTimestamp);
var typeColumn
= ordersCreateTableOperation.Columns
.Single(c => c.Name == "Type");
Assert.Equal(
DatabaseProvider != DatabaseProvider.SqlServerCe
? (int?)null
: 4000,
typeColumn.MaxLength);
var orderLinesCreateTableOperation
= operations.OfType<CreateTableOperation>()
.Single(t => t.Name == "dbo.OrderLines");
var totalColumn
= orderLinesCreateTableOperation.Columns
.Single(c => c.Name == "Total");
Assert.Equal("money", totalColumn.StoreType);
var skuColumn
= orderLinesCreateTableOperation.Columns
.Single(c => c.Name == "Sku");
Assert.Equal(128, skuColumn.MaxLength);
var priceColumn
= orderLinesCreateTableOperation.Columns
.Single(c => c.Name == "Price");
Assert.Null(priceColumn.StoreType);
Assert.Equal<byte?>(18, priceColumn.Precision);
Assert.Equal<byte?>(2, priceColumn.Scale);
}