public void Apply_should_uniquify_names() { var model = new EdmModel(DataSpace.CSpace); model.AddEntitySet("Cats", new EntityType("E", "N", DataSpace.CSpace)); var entitySet = model.AddEntitySet("Cat", new EntityType("E", "N", DataSpace.CSpace)); (new PluralizingEntitySetNameConvention()) .Apply(entitySet, new DbModel(model, null)); Assert.Equal("Cats1", entitySet.Name); }
public void Apply_should_uniquify_names() { var database = new EdmModel(DataSpace.CSpace); var tableA = new EntityType("T", XmlConstants.TargetNamespace_3, DataSpace.SSpace); var tableB = new EntityType("T", XmlConstants.TargetNamespace_3, DataSpace.SSpace); var entitySetA = database.AddEntitySet("ESA", tableA); entitySetA.Table = "Customers"; var entitySetB = database.AddEntitySet("ESB", tableB); entitySetB.Table = "Customer"; (new PluralizingTableNameConvention()).Apply(tableB, new DbModel(null, database)); Assert.Equal("Customers1", entitySetB.Table); }
public void Apply_should_uniquify_names_multiple() { var model = new EdmModel(DataSpace.CSpace); model.AddEntitySet("Cats1", new EntityType("E", "N", DataSpace.CSpace)); var entitySet1 = model.AddEntitySet("Cats", new EntityType("E", "N", DataSpace.CSpace)); var entitySet2 = model.AddEntitySet("Cat", new EntityType("E", "N", DataSpace.CSpace)); ((IEdmConvention<EntitySet>)new PluralizingEntitySetNameConvention()) .Apply(entitySet1, model); ((IEdmConvention<EntitySet>)new PluralizingEntitySetNameConvention()) .Apply(entitySet2, model); Assert.Equal("Cats", entitySet1.Name); Assert.Equal("Cats2", entitySet2.Name); }
public void Configure_should_configure_modification_functions() { var model = new EdmModel(DataSpace.CSpace); var entityType = model.AddEntityType("E"); entityType.GetMetadataProperties().SetClrType(typeof(object)); model.AddEntitySet("ESet", entityType); var modificationFunctionsConfigurationMock = new Mock<ModificationStoredProceduresConfiguration>(); var entityTypeConfiguration = new EntityTypeConfiguration(typeof(object)); entityTypeConfiguration.MapToStoredProcedures(modificationFunctionsConfigurationMock.Object, true); entityType.SetConfiguration(entityTypeConfiguration); var databaseMapping = new DatabaseMappingGenerator(ProviderRegistry.Sql2008_ProviderInfo, ProviderRegistry.Sql2008_ProviderManifest).Generate(model); entityTypeConfiguration.Configure(entityType, databaseMapping, ProviderRegistry.Sql2008_ProviderManifest); modificationFunctionsConfigurationMock .Verify( m => m.Configure( It.IsAny<EntityTypeModificationFunctionMapping>(), It.IsAny<DbProviderManifest>()), Times.Once()); }
public void Generate_can_map_a_simple_entity_type_and_set() { var model = new EdmModel().Initialize(); var entityType = model.AddEntityType("E"); var type = typeof(object); entityType.Annotations.SetClrType(type); var property = EdmProperty.Primitive("P1", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)); entityType.AddMember(property); var property1 = EdmProperty.Primitive("P2", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)); entityType.AddMember(property1); var entitySet = model.AddEntitySet("ESet", entityType); var databaseMapping = new DatabaseMappingGenerator(ProviderRegistry.Sql2008_ProviderManifest).Generate(model); var entitySetMapping = databaseMapping.GetEntitySetMapping(entitySet); Assert.NotNull(entitySetMapping); Assert.Same(entitySet, entitySetMapping.EntitySet); var entityTypeMapping = entitySetMapping.EntityTypeMappings.Single(); Assert.Same(entityType, entityTypeMapping.EntityType); Assert.NotNull(entityTypeMapping.MappingFragments.Single().Table); Assert.Equal("E", entityTypeMapping.MappingFragments.Single().Table.Name); Assert.Equal(2, entityTypeMapping.MappingFragments.Single().Table.Properties.Count); Assert.Equal(typeof(object), entityTypeMapping.GetClrType()); }
public void Generate_can_map_a_simple_entity_type_and_set() { var model = new EdmModel(DataSpace.CSpace); var entityType = model.AddEntityType("E"); var type = typeof(object); entityType.GetMetadataProperties().SetClrType(type); var property = EdmProperty.CreatePrimitive("P1", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)); entityType.AddMember(property); var property1 = EdmProperty.CreatePrimitive("P2", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)); entityType.AddMember(property1); var entitySet = model.AddEntitySet("ESet", entityType); var databaseMapping = CreateDatabaseMappingGenerator().Generate(model); var entitySetMapping = databaseMapping.GetEntitySetMapping(entitySet); Assert.NotNull(entitySetMapping); Assert.Same(entitySet, entitySetMapping.EntitySet); var entityTypeMapping = entitySetMapping.EntityTypeMappings.Single(); Assert.Same(entityType, entityTypeMapping.EntityType); Assert.NotNull(entityTypeMapping.MappingFragments.Single().Table); Assert.Equal("E", entityTypeMapping.MappingFragments.Single().Table.Name); Assert.Equal(2, entityTypeMapping.MappingFragments.Single().Table.Properties.Count); Assert.Equal(typeof(object), entityTypeMapping.GetClrType()); }
public void Map_should_create_association_sets_for_associations() { var modelConfiguration = new ModelConfiguration(); var model = new EdmModel().Initialize(); var entityType = new EntityType { Name = "Source" }; model.AddEntitySet("Source", entityType); var mappingContext = new MappingContext(modelConfiguration, new ConventionsConfiguration(), model); new NavigationPropertyMapper(new TypeMapper(mappingContext)) .Map( new MockPropertyInfo(new MockType("Target"), "Nav"), entityType, () => new EntityTypeConfiguration(typeof(object))); Assert.Equal(1, model.Containers.Single().AssociationSets.Count); var associationSet = model.Containers.Single().AssociationSets.Single(); Assert.NotNull(associationSet); Assert.NotNull(associationSet.ElementType); Assert.Equal("Source_Nav", associationSet.Name); }
public void Apply_should_ignore_current_entity_set() { var model = new EdmModel(DataSpace.CSpace); var entitySet = model.AddEntitySet("Cats", new EntityType("E", "N", DataSpace.CSpace)); ((IEdmConvention<EntitySet>)new PluralizingEntitySetNameConvention()) .Apply(entitySet, model); Assert.Equal("Cats", entitySet.Name); }
public void Apply_should_ignore_current_table() { var database = new EdmModel(DataSpace.CSpace); var table = new EntityType("T", XmlConstants.TargetNamespace_3, DataSpace.SSpace); var entitySet = database.AddEntitySet("ES", table); entitySet.Table = "Customers"; (new PluralizingTableNameConvention()).Apply(table, new DbModel(null, database)); Assert.Equal("Customers", entitySet.Table); }
public void Apply_should_set_pluralized_table_name_as_identitier() { var database = new EdmModel(DataSpace.CSpace); var table = new EntityType("T", XmlConstants.TargetNamespace_3, DataSpace.SSpace); var entitySet = database.AddEntitySet("ES", table); entitySet.Table = "Customer"; ((IDbConvention<EntityType>)new PluralizingTableNameConvention()).Apply(table, database); Assert.Equal("Customers", entitySet.Table); }
public void Configure_should_uniquify_unconfigured_function_names() { var modelConfiguration = new ModelConfiguration(); var typeA = new MockType("A"); var typeB = new MockType("B"); modelConfiguration.Entity(typeA).MapToStoredProcedures(); var modificationFunctionsConfiguration = new ModificationStoredProceduresConfiguration(); var modificationFunctionConfiguration = new ModificationStoredProcedureConfiguration(); modificationFunctionConfiguration.HasName("A_Insert"); modificationFunctionsConfiguration.Insert(modificationFunctionConfiguration); modelConfiguration.Entity(typeB).MapToStoredProcedures(modificationFunctionsConfiguration, true); var model = new EdmModel(DataSpace.CSpace); var entityA = model.AddEntityType("A"); entityA.GetMetadataProperties().SetClrType(typeA); entityA.SetConfiguration(modelConfiguration.Entity(typeA)); var entityB = model.AddEntityType("B"); entityB.GetMetadataProperties().SetClrType(typeB); entityB.SetConfiguration(modelConfiguration.Entity(typeB)); model.AddEntitySet("AS", entityA); model.AddEntitySet("BS", entityB); var databaseMapping = new DatabaseMappingGenerator(ProviderRegistry.Sql2008_ProviderInfo, ProviderRegistry.Sql2008_ProviderManifest) .Generate(model); modelConfiguration.Configure(databaseMapping, ProviderRegistry.Sql2008_ProviderManifest); Assert.True(databaseMapping.Database.Functions.Any(f => f.StoreFunctionNameAttribute == "A_Insert")); Assert.True(databaseMapping.Database.Functions.Any(f => f.StoreFunctionNameAttribute == "A_Insert1")); }
public void Map_should_map_entity_navigation_properties() { var model = new EdmModel(DataSpace.CSpace); var entityType = new EntityType("E", "N", DataSpace.CSpace); model.AddEntitySet("Source", entityType); var mappingContext = new MappingContext(new ModelConfiguration(), new ConventionsConfiguration(), model); new PropertyMapper(new TypeMapper(mappingContext)) .Map(new MockPropertyInfo(typeof(AType1), "Foo"), entityType, () => new EntityTypeConfiguration(typeof(object))); Assert.Equal(1, entityType.DeclaredNavigationProperties.Count); }
public void Apply_should_ignored_configured_tables() { var database = new EdmModel(DataSpace.CSpace); var table = new EntityType("T", XmlConstants.TargetNamespace_3, DataSpace.SSpace); table.SetTableName(new DatabaseName("Foo")); var entitySet = database.AddEntitySet("ES", table); entitySet.Table = "Customer"; ((IDbConvention<EntityType>)new PluralizingTableNameConvention()).Apply(table, database); Assert.Equal("Customer", entitySet.Table); Assert.Equal("Foo", table.GetTableName().Name); }
public void Configure_should_configure_entity_set_name() { var model = new EdmModel(DataSpace.CSpace); var entityType = new EntityType("E", "N", DataSpace.CSpace); var entitySet = model.AddEntitySet("ESet", entityType); var entityTypeConfiguration = new EntityTypeConfiguration(typeof(object)) { EntitySetName = "MySet" }; entityTypeConfiguration.Configure(entityType, model); Assert.Equal("MySet", entitySet.Name); Assert.Same(entityTypeConfiguration, entitySet.GetConfiguration()); }
private static DbDatabaseMapping CreateSimpleModel(double version) { var model = new EdmModel(DataSpace.CSpace, version); var entityType = model.AddEntityType("E"); var type = typeof(object); entityType.GetMetadataProperties().SetClrType(type); model.AddEntitySet("ESet", entityType); var property1 = EdmProperty.CreatePrimitive("Id", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)); entityType.AddMember(property1); var property = property1; property.Nullable = false; entityType.AddKeyMember(property); return new DatabaseMappingGenerator(ProviderRegistry.Sql2008_ProviderInfo, ProviderRegistry.Sql2008_ProviderManifest).Generate(model); }
public void Map_should_detect_collection_associations_and_set_correct_end_kinds() { var modelConfiguration = new ModelConfiguration(); var model = new EdmModel().Initialize(); var entityType = new EntityType(); model.AddEntitySet("Source", entityType); var mappingContext = new MappingContext(modelConfiguration, new ConventionsConfiguration(), model); new NavigationPropertyMapper(new TypeMapper(mappingContext)) .Map( new MockPropertyInfo(typeof(List<NavigationPropertyMapperTests>), "Nav"), entityType, () => new EntityTypeConfiguration(typeof(object))); Assert.Equal(1, model.Namespaces.Single().AssociationTypes.Count); var associationType = model.Namespaces.Single().AssociationTypes.Single(); Assert.Equal(RelationshipMultiplicity.ZeroOrOne, associationType.SourceEnd.RelationshipMultiplicity); Assert.Equal(RelationshipMultiplicity.Many, associationType.TargetEnd.RelationshipMultiplicity); }
public void Map_should_set_default_association_multiplicity_to_collection_to_optional() { var modelConfiguration = new ModelConfiguration(); var model = new EdmModel(DataSpace.CSpace); var entityType = new EntityType("E", "N", DataSpace.CSpace); model.AddEntitySet("Source", entityType); var mappingContext = new MappingContext(modelConfiguration, new ConventionsConfiguration(), model); new NavigationPropertyMapper(new TypeMapper(mappingContext)) .Map( new MockPropertyInfo(new MockType("Target"), "Nav"), entityType, () => new EntityTypeConfiguration(typeof(object))); Assert.Equal(1, model.AssociationTypes.Count()); var associationType = model.AssociationTypes.Single(); Assert.Equal(RelationshipMultiplicity.Many, associationType.SourceEnd.RelationshipMultiplicity); Assert.Equal(RelationshipMultiplicity.ZeroOrOne, associationType.TargetEnd.RelationshipMultiplicity); }
public void Apply_should_sort_unannotated_in_given_order() { var table = new EntityType("T", XmlConstants.TargetNamespace_3, DataSpace.SSpace); table.AddColumn( new EdmProperty( "C", ProviderRegistry.Sql2008_ProviderManifest.GetStoreType( TypeUsage.Create(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String))))); table.AddColumn( new EdmProperty( "Id", ProviderRegistry.Sql2008_ProviderManifest.GetStoreType( TypeUsage.Create(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String))))); var database = new EdmModel().Initialize(); database.AddEntitySet("ES", table); ((IDbConvention<EntityType>)new ColumnOrderingConvention()).Apply(table, database); Assert.Equal(2, table.Properties.Count); Assert.Equal("C", table.Properties.First().Name); }
public void Map_should_set_namespace_when_provided_via_model_configuration() { var modelConfiguration = new ModelConfiguration { ModelNamespace = "Foo" }; var model = new EdmModel(DataSpace.CSpace); var entityType = new EntityType("E", "N", DataSpace.CSpace); model.AddEntitySet("Source", entityType); var mappingContext = new MappingContext(modelConfiguration, new ConventionsConfiguration(), model); new NavigationPropertyMapper(new TypeMapper(mappingContext)) .Map( new MockPropertyInfo(new MockType("Target"), "Nav"), entityType, () => new EntityTypeConfiguration(typeof(object))); Assert.Equal(1, model.AssociationTypes.Count()); var associationType = model.AssociationTypes.Single(); Assert.Equal("Foo", associationType.NamespaceName); }
public void Apply_should_sort_annotated_before_unannotated() { var table = new EntityType("T", XmlConstants.TargetNamespace_3, DataSpace.SSpace); var columnA = new EdmProperty( "C", ProviderRegistry.Sql2008_ProviderManifest.GetStoreType( TypeUsage.Create(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)))); columnA.SetOrder(2); table.AddColumn(columnA); table.AddColumn( new EdmProperty( "Id", ProviderRegistry.Sql2008_ProviderManifest.GetStoreType( TypeUsage.Create(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String))))); var database = new EdmModel(DataSpace.CSpace); database.AddEntitySet("ES", table); (new ColumnOrderingConvention()).Apply(table, new DbModel(null, database)); Assert.Equal(2, table.Properties.Count); Assert.Equal("C", table.Properties.First().Name); }
public void Generate_should_correctly_map_string_primitive_property_facets() { var model = new EdmModel(DataSpace.CSpace); var entityType = model.AddEntityType("E"); var type = typeof(object); entityType.GetMetadataProperties().SetClrType(type); model.AddEntitySet("ESet", entityType); var property = EdmProperty .CreatePrimitive("P", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)); entityType.AddMember(property); property.Nullable = false; property.IsFixedLength = true; property.IsMaxLength = true; property.IsUnicode = true; property.MaxLength = 42; property.Precision = 23; property.Scale = 77; property.SetStoreGeneratedPattern(StoreGeneratedPattern.Identity); var databaseMapping = CreateDatabaseMappingGenerator().Generate(model); var column = databaseMapping.GetEntityTypeMapping(entityType).MappingFragments.Single().ColumnMappings.Single().ColumnProperty; Assert.False(column.Nullable); Assert.True(column.IsFixedLengthConstant); Assert.False(column.IsMaxLength); Assert.True(column.IsUnicodeConstant); Assert.Equal(42, column.MaxLength); Assert.Null(column.Precision); Assert.Null(column.Scale); Assert.Equal(StoreGeneratedPattern.Identity, column.StoreGeneratedPattern); }
public void Generate_should_correctly_map_string_primitive_property_facets() { var model = new EdmModel().Initialize(); var entityType = model.AddEntityType("E"); var type = typeof(object); entityType.Annotations.SetClrType(type); model.AddEntitySet("ESet", entityType); var property = EdmProperty .Primitive("P", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)); entityType.AddMember(property); property.Nullable = false; property.IsFixedLength = true; property.IsMaxLength = true; property.IsUnicode = true; property.MaxLength = 42; property.Precision = 23; property.Scale = 77; property.SetStoreGeneratedPattern(StoreGeneratedPattern.Identity); var databaseMapping = new DatabaseMappingGenerator(ProviderRegistry.Sql2008_ProviderManifest).Generate(model); var column = databaseMapping.GetEntityTypeMapping(entityType).MappingFragments.Single().ColumnMappings.Single().ColumnProperty; Assert.False(column.Nullable); Assert.Null(column.IsFixedLength); Assert.Equal(false, column.IsMaxLength); Assert.Null(column.IsUnicode); Assert.Equal(42, column.MaxLength); Assert.Null(column.Precision); Assert.Null(column.Scale); Assert.Equal(StoreGeneratedPattern.Identity, column.StoreGeneratedPattern); }
public void Map_should_set_clr_property_info_on_assocation_source_end() { var modelConfiguration = new ModelConfiguration(); var model = new EdmModel(DataSpace.CSpace); var entityType = new EntityType("E", "N", DataSpace.CSpace); model.AddEntitySet("Source", entityType); var mappingContext = new MappingContext(modelConfiguration, new ConventionsConfiguration(), model); var mockPropertyInfo = new MockPropertyInfo(new MockType("Target"), "Nav"); new NavigationPropertyMapper(new TypeMapper(mappingContext)) .Map( mockPropertyInfo, entityType, () => new EntityTypeConfiguration(typeof(object))); var associationType = model.AssociationTypes.Single(); Assert.Same(mockPropertyInfo.Object, associationType.SourceEnd.GetClrPropertyInfo()); }
public void Map_should_create_navigation_property_for_association() { var modelConfiguration = new ModelConfiguration(); var model = new EdmModel(DataSpace.CSpace); var entityType = new EntityType("E", "N", DataSpace.CSpace); model.AddEntitySet("Source", entityType); var mappingContext = new MappingContext(modelConfiguration, new ConventionsConfiguration(), model); new NavigationPropertyMapper(new TypeMapper(mappingContext)) .Map( new MockPropertyInfo(new MockType("Target"), "Nav"), entityType, () => new EntityTypeConfiguration(typeof(object))); Assert.Equal(1, entityType.DeclaredNavigationProperties.Count); var navigationProperty = entityType.NavigationProperties.Single(); Assert.Equal("Nav", navigationProperty.Name); Assert.NotNull(navigationProperty.Association); Assert.NotSame(entityType, navigationProperty.ResultEnd.GetEntityType()); }
public void Generate_should_not_generate_modification_function_mappings_when_ends_not_mapped_to_functions() { var model = new EdmModel(DataSpace.CSpace); var entityType1 = model.AddEntityType("E1"); entityType1.GetMetadataProperties().SetClrType(typeof(string)); model.AddEntitySet("E1Set", entityType1); var entityType2 = model.AddEntityType("E2"); entityType2.GetMetadataProperties().SetClrType(typeof(string)); model.AddEntitySet("E2Set", entityType2); var entityTypeConfiguration = new EntityTypeConfiguration(typeof(object)); entityType1.SetConfiguration(entityTypeConfiguration); entityType2.SetConfiguration(entityTypeConfiguration); model.AddAssociationSet( "M2MSet", model.AddAssociationType( "M2M", entityType1, RelationshipMultiplicity.Many, entityType2, RelationshipMultiplicity.Many)); var databaseMapping = CreateDatabaseMappingGenerator().Generate(model); Assert.Equal(0, databaseMapping.Database.Functions.Count()); }
public void Generate_should_not_generate_modification_function_mappings_when_entity_abstract() { var model = new EdmModel(DataSpace.CSpace); var entityType = model.AddEntityType("E"); entityType.Abstract = true; entityType.GetMetadataProperties().SetClrType(typeof(string)); var derivedType = model.AddEntityType("D"); derivedType.BaseType = entityType; derivedType.GetMetadataProperties().SetClrType(typeof(object)); model.AddEntitySet("ESet", entityType); var entityTypeConfiguration = new EntityTypeConfiguration(typeof(object)); entityTypeConfiguration.MapToStoredProcedures(); entityType.SetConfiguration(entityTypeConfiguration); var databaseMapping = CreateDatabaseMappingGenerator().Generate(model); Assert.Equal(0, databaseMapping.Database.Functions.Count()); }
public void Generate_maps_abstract_type_hierarchies_correctly() { var model = new EdmModel(DataSpace.CSpace); var rootEntityType = model.AddEntityType("E"); rootEntityType.GetMetadataProperties().SetClrType(typeof(object)); var property0 = EdmProperty.CreatePrimitive("P1", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)); rootEntityType.AddMember(property0); rootEntityType.AddKeyMember(rootEntityType.Properties.First()); var property1 = EdmProperty.CreatePrimitive("P2", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)); rootEntityType.AddMember(property1); model.AddEntitySet("ESet", rootEntityType); var entityType2 = model.AddEntityType("E2"); var property2 = EdmProperty.CreatePrimitive("P3", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)); entityType2.AddMember(property2); entityType2.GetMetadataProperties().SetClrType(typeof(string)); entityType2.Abstract = true; entityType2.BaseType = rootEntityType; var entityType3 = model.AddEntityType("E3"); entityType3.GetMetadataProperties().SetClrType(typeof(int)); var property3 = EdmProperty.CreatePrimitive("P4", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)); entityType3.AddMember(property3); entityType3.BaseType = entityType2; var databaseMapping = CreateDatabaseMappingGenerator().Generate(model); var entityType1Mapping = databaseMapping.GetEntityTypeMapping(rootEntityType); var entityType3Mapping = databaseMapping.GetEntityTypeMapping(entityType3); Assert.Equal(2, entityType1Mapping.MappingFragments.Single().ColumnMappings.Count()); Assert.Equal("P1", entityType1Mapping.MappingFragments.Single().ColumnMappings.ElementAt(0).ColumnProperty.Name); Assert.Equal("P2", entityType1Mapping.MappingFragments.Single().ColumnMappings.ElementAt(1).ColumnProperty.Name); Assert.Equal(4, entityType3Mapping.MappingFragments.Single().ColumnMappings.Count()); Assert.Equal("P1", entityType3Mapping.MappingFragments.Single().ColumnMappings.ElementAt(0).ColumnProperty.Name); Assert.Equal("P2", entityType3Mapping.MappingFragments.Single().ColumnMappings.ElementAt(1).ColumnProperty.Name); Assert.Equal("P3", entityType3Mapping.MappingFragments.Single().ColumnMappings.ElementAt(2).ColumnProperty.Name); Assert.Equal("P4", entityType3Mapping.MappingFragments.Single().ColumnMappings.ElementAt(3).ColumnProperty.Name); var table = entityType1Mapping.MappingFragments.Single().Table; Assert.Equal(5, table.Properties.Count); }
public void Generate_can_map_type_hierarchies_using_Tph() { var model = new EdmModel(DataSpace.CSpace); var rootEntityType = model.AddEntityType("E"); var type = typeof(object); rootEntityType.GetMetadataProperties().SetClrType(type); var property = EdmProperty.CreatePrimitive("P1", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)); rootEntityType.AddMember(property); var property1 = EdmProperty.CreatePrimitive("P2", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)); rootEntityType.AddMember(property1); var entitySet = model.AddEntitySet("ESet", rootEntityType); var entityType2 = model.AddEntityType("E2"); var property2 = EdmProperty.CreatePrimitive("P3", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)); entityType2.AddMember(property2); var type1 = typeof(string); entityType2.GetMetadataProperties().SetClrType(type1); entityType2.BaseType = rootEntityType; var entityType3 = model.AddEntityType("E3"); var type2 = typeof(int); entityType3.GetMetadataProperties().SetClrType(type2); var property3 = EdmProperty.CreatePrimitive("P4", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)); entityType3.AddMember(property3); entityType3.BaseType = entityType2; var databaseMapping = CreateDatabaseMappingGenerator().Generate(model); var entitySetMapping = databaseMapping.GetEntitySetMapping(entitySet); Assert.NotNull(entitySetMapping); var entityTypeMappings = entitySetMapping.EntityTypeMappings; Assert.Equal(3, entityTypeMappings.Count()); var entityType1Mapping = databaseMapping.GetEntityTypeMapping(rootEntityType); var entityType2Mapping = databaseMapping.GetEntityTypeMapping(entityType2); var entityType3Mapping = databaseMapping.GetEntityTypeMapping(entityType3); Assert.Equal(2, entityType1Mapping.MappingFragments.Single().ColumnMappings.Count()); Assert.Equal(3, entityType2Mapping.MappingFragments.Single().ColumnMappings.Count()); Assert.Equal(4, entityType3Mapping.MappingFragments.Single().ColumnMappings.Count()); var table = entityType1Mapping.MappingFragments.Single().Table; Assert.Same(table, entityType2Mapping.MappingFragments.Single().Table); Assert.Same(table, entityType3Mapping.MappingFragments.Single().Table); Assert.Equal(5, table.Properties.Count); Assert.Equal("P1", table.Properties[0].Name); Assert.Equal("P2", table.Properties[1].Name); Assert.Equal("P3", table.Properties[2].Name); Assert.Equal("P4", table.Properties[3].Name); Assert.Equal("Discriminator", table.Properties[4].Name); }
public void Generate_can_map_foreign_key_association_type() { var model = new EdmModel(DataSpace.CSpace); var principalEntityType = model.AddEntityType("P"); principalEntityType.GetMetadataProperties().SetClrType(typeof(object)); var dependentEntityType = model.AddEntityType("D"); dependentEntityType.GetMetadataProperties().SetClrType(typeof(string)); var dependentProperty1 = EdmProperty.CreatePrimitive("FK1", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.Int32)); dependentProperty1.Nullable = false; dependentEntityType.AddMember(dependentProperty1); var dependentProperty2 = EdmProperty.CreatePrimitive("FK2", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)); dependentEntityType.AddMember(dependentProperty2); model.AddEntitySet("PSet", principalEntityType); model.AddEntitySet("DSet", dependentEntityType); var associationType = model.AddAssociationType( "P_D", principalEntityType, RelationshipMultiplicity.One, dependentEntityType, RelationshipMultiplicity.Many); associationType.Constraint = new ReferentialConstraint( associationType.SourceEnd, associationType.TargetEnd, principalEntityType.KeyProperties, new[] { dependentProperty1, dependentProperty2 }); associationType.SourceEnd.DeleteBehavior = OperationAction.Cascade; var databaseMapping = CreateDatabaseMappingGenerator().Generate(model); var dependentTable = databaseMapping.GetEntityTypeMapping(dependentEntityType).MappingFragments.Single().Table; var foreignKeyConstraint = dependentTable.ForeignKeyBuilders.Single(); Assert.Equal(2, dependentTable.Properties.Count()); Assert.Equal(2, foreignKeyConstraint.DependentColumns.Count()); Assert.Equal(OperationAction.Cascade, foreignKeyConstraint.DeleteAction); Assert.Equal(associationType.Name, foreignKeyConstraint.Name); var foreignKeyColumn = foreignKeyConstraint.DependentColumns.First(); Assert.False(foreignKeyColumn.Nullable); Assert.Equal("FK1", foreignKeyColumn.Name); }
public void Generate_can_map_independent_association_type() { var model = new EdmModel(DataSpace.CSpace); var principalEntityType = model.AddEntityType("P"); var type = typeof(object); principalEntityType.GetMetadataProperties().SetClrType(type); var property = EdmProperty.CreatePrimitive("Id1", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)); principalEntityType.AddMember(property); var idProperty1 = property; principalEntityType.AddKeyMember(idProperty1); var property1 = EdmProperty.CreatePrimitive("Id2", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)); principalEntityType.AddMember(property1); var idProperty2 = property1; principalEntityType.AddKeyMember(idProperty2); var dependentEntityType = model.AddEntityType("D"); var type1 = typeof(string); dependentEntityType.GetMetadataProperties().SetClrType(type1); model.AddEntitySet("PSet", principalEntityType); model.AddEntitySet("DSet", dependentEntityType); var associationType = model.AddAssociationType( "P_D", principalEntityType, RelationshipMultiplicity.One, dependentEntityType, RelationshipMultiplicity.Many); model.AddAssociationSet("P_DSet", associationType); associationType.SourceEnd.DeleteBehavior = OperationAction.Cascade; var databaseMapping = CreateDatabaseMappingGenerator().Generate(model); var foreignKeyConstraint = databaseMapping.GetEntityTypeMapping(dependentEntityType).MappingFragments.Single().Table.ForeignKeyBuilders.Single(); Assert.Equal(2, foreignKeyConstraint.DependentColumns.Count()); Assert.Equal(associationType.Name, foreignKeyConstraint.Name); Assert.Equal(1, databaseMapping.EntityContainerMappings.Single().AssociationSetMappings.Count()); Assert.Equal(OperationAction.Cascade, foreignKeyConstraint.DeleteAction); var foreignKeyColumn = foreignKeyConstraint.DependentColumns.First(); Assert.False(foreignKeyColumn.Nullable); Assert.Equal("P_Id1", foreignKeyColumn.Name); }