public void Apply_should_uniquify_names() { var model = new EdmModel().Initialize(); model.AddEntitySet("Cats", new EdmEntityType()); var entitySet = model.AddEntitySet("Cat", new EdmEntityType()); ((IEdmConvention<EdmEntitySet>)new PluralizingEntitySetNameConvention()) .Apply(entitySet, model); Assert.Equal("Cats1", entitySet.Name); }
public void Generate_should_correctly_map_string_primitive_property_facets() { var model = new EdmModel().Initialize(); var entityType = model.AddEntityType("E"); entityType.SetClrType(typeof(object)); model.AddEntitySet("ESet", entityType); var property = entityType.AddPrimitiveProperty("P"); property.PropertyType.EdmType = EdmPrimitiveType.String; property.PropertyType.IsNullable = false; property.PropertyType.PrimitiveTypeFacets.IsFixedLength = true; property.PropertyType.PrimitiveTypeFacets.IsMaxLength = true; property.PropertyType.PrimitiveTypeFacets.IsUnicode = true; property.PropertyType.PrimitiveTypeFacets.MaxLength = 42; property.PropertyType.PrimitiveTypeFacets.Precision = 23; property.PropertyType.PrimitiveTypeFacets.Scale = 77; property.SetStoreGeneratedPattern(DbStoreGeneratedPattern.Identity); var databaseMapping = new DatabaseMappingGenerator(ProviderRegistry.Sql2008_ProviderManifest).Generate(model); var column = databaseMapping.GetEntityTypeMapping(entityType).TypeMappingFragments.Single().PropertyMappings.Single().Column; Assert.False(column.IsNullable); Assert.Null(column.Facets.IsFixedLength); Assert.Equal(true, column.Facets.IsMaxLength); Assert.Null(column.Facets.IsUnicode); Assert.Equal(42, column.Facets.MaxLength); Assert.Null(column.Facets.Precision); Assert.Null(column.Facets.Scale); Assert.Equal(DbStoreGeneratedPattern.Identity, column.StoreGeneratedPattern); }
public void Configure_should_configure_entity_set_name() { var model = new EdmModel().Initialize(); var entityType = new EdmEntityType { Name = "E" }; 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().Initialize(version); var entityType = model.AddEntityType("E"); entityType.SetClrType(typeof(object)); model.AddEntitySet("ESet", entityType); var property = entityType.AddPrimitiveProperty("Id"); property.PropertyType.EdmType = EdmPrimitiveType.Int32; property.PropertyType.IsNullable = false; entityType.DeclaredKeyProperties.Add(property); return new DatabaseMappingGenerator(ProviderRegistry.Sql2008_ProviderManifest).Generate(model); }
public void Generate_can_map_a_simple_entity_type_and_set() { var model = new EdmModel().Initialize(); var entityType = model.AddEntityType("E"); entityType.SetClrType(typeof(object)); entityType.AddPrimitiveProperty("P1").PropertyType.EdmType = EdmPrimitiveType.Int32; entityType.AddPrimitiveProperty("P2").PropertyType.EdmType = EdmPrimitiveType.String; 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.TypeMappingFragments.Single().Table); Assert.Equal("E", entityTypeMapping.TypeMappingFragments.Single().Table.Name); Assert.Equal(2, entityTypeMapping.TypeMappingFragments.Single().Table.Columns.Count); Assert.Equal(typeof(object), entityTypeMapping.GetClrType()); }
public void GetValidationErrors_should_return_validation_errors() { var model = new EdmModel().Initialize(); model.AddEntitySet("S", new EdmEntityType()); var validationErrors = model.GetCsdlErrors(); Assert.Equal(1, validationErrors.Count()); }
public void RemoveEntityType_should_remove_type_and_set() { var model = new EdmModel().Initialize(); var entityType = model.AddEntityType("Foo"); model.AddEntitySet("FooSet", entityType); model.RemoveEntityType(entityType); Assert.Equal(0, model.GetEntityTypes().Count()); Assert.Equal(0, model.Containers.First().EntitySets.Count()); }
public void AddEntitySet_should_create_and_add_to_default_container() { var model = new EdmModel().Initialize(); var entityType = model.AddEntityType("Foo"); var entitySet = model.AddEntitySet("FooSet", entityType); Assert.NotNull(entitySet); Assert.Equal("FooSet", entitySet.Name); Assert.Same(entityType, entitySet.ElementType); Assert.True(model.Containers.Single().EntitySets.Contains(entitySet)); }
public void GetAssociationSet_should_return_association_set() { var model = new EdmModel().Initialize(); var entityType = model.AddEntityType("Foo"); model.AddEntitySet("FooSet", entityType); var associationType = new EdmAssociationType().Initialize(); associationType.SourceEnd.EntityType = entityType; associationType.TargetEnd.EntityType = entityType; model.AddAssociationSet("FooSet", associationType); var associationSet = model.GetAssociationSet(associationType); Assert.NotNull(associationSet); Assert.Same(associationType, associationSet.ElementType); }
public void GetEntitySet_should_return_entity_set() { var model = new EdmModel().Initialize(); var entityType = model.AddEntityType("Foo"); model.AddEntitySet("FooSet", entityType); var entitySet = model.GetEntitySet(entityType); Assert.NotNull(entitySet); Assert.Same(entityType, entitySet.ElementType); }
public void GetEntitySets_should_return_all_sets() { var model = new EdmModel().Initialize(); model.AddEntitySet("S", new EdmEntityType()); model.AddEntitySet("T", new EdmEntityType()); Assert.Equal(2, model.GetEntitySets().Count()); }
public void Validate_should_throw() { var model = new EdmModel().Initialize(); model.AddEntitySet("S", new EdmEntityType()); Assert.Throws<ModelValidationException>(() => model.ValidateCsdl()); }
public void Generate_maps_abstract_type_hierarchies_correctly() { var model = new EdmModel().Initialize(); var rootEntityType = model.AddEntityType("E"); rootEntityType.SetClrType(typeof(object)); rootEntityType.AddPrimitiveProperty("P1").PropertyType.EdmType = EdmPrimitiveType.Int32; rootEntityType.DeclaredKeyProperties.Add(rootEntityType.Properties.First()); rootEntityType.AddPrimitiveProperty("P2").PropertyType.EdmType = EdmPrimitiveType.String; model.AddEntitySet("ESet", rootEntityType); var entityType2 = model.AddEntityType("E2"); entityType2.AddPrimitiveProperty("P3").PropertyType.EdmType = EdmPrimitiveType.Decimal; entityType2.SetClrType(typeof(string)); entityType2.IsAbstract = true; entityType2.BaseType = rootEntityType; var entityType3 = model.AddEntityType("E3"); entityType3.SetClrType(typeof(int)); entityType3.AddPrimitiveProperty("P4").PropertyType.EdmType = EdmPrimitiveType.Int32; entityType3.BaseType = entityType2; var databaseMapping = new DatabaseMappingGenerator(ProviderRegistry.Sql2008_ProviderManifest).Generate(model); var entityType1Mapping = databaseMapping.GetEntityTypeMapping(rootEntityType); var entityType3Mapping = databaseMapping.GetEntityTypeMapping(entityType3); Assert.Equal(2, entityType1Mapping.TypeMappingFragments.Single().PropertyMappings.Count); Assert.Equal("P1", entityType1Mapping.TypeMappingFragments.Single().PropertyMappings[0].Column.Name); Assert.Equal("P2", entityType1Mapping.TypeMappingFragments.Single().PropertyMappings[1].Column.Name); Assert.Equal(4, entityType3Mapping.TypeMappingFragments.Single().PropertyMappings.Count); Assert.Equal("P1", entityType3Mapping.TypeMappingFragments.Single().PropertyMappings[0].Column.Name); Assert.Equal("P2", entityType3Mapping.TypeMappingFragments.Single().PropertyMappings[1].Column.Name); Assert.Equal("P3", entityType3Mapping.TypeMappingFragments.Single().PropertyMappings[2].Column.Name); Assert.Equal("P4", entityType3Mapping.TypeMappingFragments.Single().PropertyMappings[3].Column.Name); var table = entityType1Mapping.TypeMappingFragments.Single().Table; Assert.Equal(5, table.Columns.Count); }
public void Generate_can_map_type_hierarchies_using_Tph() { var model = new EdmModel().Initialize(); var rootEntityType = model.AddEntityType("E"); rootEntityType.SetClrType(typeof(object)); rootEntityType.AddPrimitiveProperty("P1").PropertyType.EdmType = EdmPrimitiveType.Int32; rootEntityType.AddPrimitiveProperty("P2").PropertyType.EdmType = EdmPrimitiveType.String; var entitySet = model.AddEntitySet("ESet", rootEntityType); var entityType2 = model.AddEntityType("E2"); entityType2.AddPrimitiveProperty("P3").PropertyType.EdmType = EdmPrimitiveType.Decimal; entityType2.SetClrType(typeof(string)); entityType2.BaseType = rootEntityType; var entityType3 = model.AddEntityType("E3"); entityType3.SetClrType(typeof(int)); entityType3.AddPrimitiveProperty("P4").PropertyType.EdmType = EdmPrimitiveType.Int32; entityType3.BaseType = entityType2; var databaseMapping = new DatabaseMappingGenerator(ProviderRegistry.Sql2008_ProviderManifest).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.TypeMappingFragments.Single().PropertyMappings.Count); Assert.Equal(3, entityType2Mapping.TypeMappingFragments.Single().PropertyMappings.Count); Assert.Equal(4, entityType3Mapping.TypeMappingFragments.Single().PropertyMappings.Count); var table = entityType1Mapping.TypeMappingFragments.Single().Table; Assert.Same(table, entityType2Mapping.TypeMappingFragments.Single().Table); Assert.Same(table, entityType3Mapping.TypeMappingFragments.Single().Table); Assert.Equal(5, table.Columns.Count); Assert.Equal("P1", table.Columns[0].Name); Assert.Equal("P2", table.Columns[1].Name); Assert.Equal("P3", table.Columns[2].Name); Assert.Equal("P4", table.Columns[3].Name); Assert.Equal("Discriminator", table.Columns[4].Name); }
public void Generate_can_map_foreign_key_association_type() { var model = new EdmModel().Initialize(); var principalEntityType = model.AddEntityType("P"); principalEntityType.SetClrType(typeof(object)); var dependentEntityType = model.AddEntityType("D"); dependentEntityType.SetClrType(typeof(string)); var dependentProperty1 = dependentEntityType.AddPrimitiveProperty("FK1"); dependentProperty1.PropertyType.EdmType = EdmPrimitiveType.Int32; var dependentProperty2 = dependentEntityType.AddPrimitiveProperty("FK2"); dependentProperty2.PropertyType.EdmType = EdmPrimitiveType.String; model.AddEntitySet("PSet", principalEntityType); model.AddEntitySet("DSet", dependentEntityType); var associationType = model.AddAssociationType("P_D", principalEntityType, EdmAssociationEndKind.Required, dependentEntityType, EdmAssociationEndKind.Many); associationType.Constraint = new EdmAssociationConstraint { DependentEnd = associationType.TargetEnd, DependentProperties = new[] { dependentProperty1, dependentProperty2 }, }; associationType.SourceEnd.DeleteAction = EdmOperationAction.Cascade; var databaseMapping = new DatabaseMappingGenerator(ProviderRegistry.Sql2008_ProviderManifest).Generate(model); var dependentTable = databaseMapping.GetEntityTypeMapping(dependentEntityType).TypeMappingFragments.Single().Table; var foreignKeyConstraint = dependentTable.ForeignKeyConstraints.Single(); Assert.Equal(2, dependentTable.Columns.Count()); Assert.Equal(2, foreignKeyConstraint.DependentColumns.Count); Assert.Equal(DbOperationAction.Cascade, foreignKeyConstraint.DeleteAction); Assert.Equal(associationType.Name, foreignKeyConstraint.Name); var foreignKeyColumn = foreignKeyConstraint.DependentColumns.First(); Assert.False(foreignKeyColumn.IsNullable); Assert.Equal("FK1", foreignKeyColumn.Name); }
public void Generate_should_map_entity_keys_to_primary_keys() { var model = new EdmModel().Initialize(); var entityType = model.AddEntityType("E"); entityType.SetClrType(typeof(object)); var idProperty = entityType.AddPrimitiveProperty("Id"); idProperty.PropertyType.EdmType = EdmPrimitiveType.Int32; entityType.DeclaredKeyProperties.Add(idProperty); var entitySet = model.AddEntitySet("ESet", entityType); var databaseMapping = new DatabaseMappingGenerator(ProviderRegistry.Sql2008_ProviderManifest).Generate(model); var entitySetMapping = databaseMapping.GetEntitySetMapping(entitySet); var entityTypeMapping = entitySetMapping.EntityTypeMappings.Single(); Assert.Equal(1, entityTypeMapping.TypeMappingFragments.Single().Table.KeyColumns.Count()); Assert.Equal("Id", entityTypeMapping.TypeMappingFragments.Single().Table.KeyColumns.Single().Name); Assert.True(entityTypeMapping.TypeMappingFragments.Single().Table.KeyColumns.Single().IsPrimaryKeyColumn); }