public void Can_update_complex_column_mapping() { var mappingFragment = new StorageMappingFragment( new EntitySet(), new StorageEntityTypeMapping( new StorageEntitySetMapping( new EntitySet(), new StorageEntityContainerMapping(new EntityContainer()))), false); var property1 = EdmProperty.Complex("P1", new ComplexType("CT")); var property2 = new EdmProperty("P2"); var columnMappingBuilder1 = new ColumnMappingBuilder(new EdmProperty("C"), new[] { property1, property2 }); mappingFragment.AddColumnMapping(columnMappingBuilder1); var columnProperty = new EdmProperty("C"); var columnMappingBuilder2 = new ColumnMappingBuilder(columnProperty, new[] { property1, property2 }); mappingFragment.AddColumnMapping(columnMappingBuilder2); var complexPropertyMapping = (StorageComplexPropertyMapping)mappingFragment.Properties.Single(); var typeMapping = complexPropertyMapping.TypeMappings.Single(); var scalarPropertyMapping = (StorageScalarPropertyMapping)typeMapping.Properties.Single(); Assert.Same(columnProperty, scalarPropertyMapping.ColumnProperty); Assert.Same(property2, scalarPropertyMapping.EdmProperty); }
public void Can_remove_complex_column_mapping() { var mappingFragment = new StorageMappingFragment( new EntitySet(), new StorageEntityTypeMapping( new StorageEntitySetMapping( new EntitySet(), new StorageEntityContainerMapping(new EntityContainer()))), false); Assert.Empty(mappingFragment.ColumnMappings); var columnProperty = new EdmProperty("C"); var property1 = EdmProperty.Complex("P1", new ComplexType("CT")); var property2 = new EdmProperty("P2"); var columnMappingBuilder = new ColumnMappingBuilder(columnProperty, new[] { property1, property2 }); mappingFragment.AddColumnMapping(columnMappingBuilder); Assert.Same(columnMappingBuilder, mappingFragment.ColumnMappings.Single()); Assert.NotEmpty(mappingFragment.Properties); mappingFragment.RemoveColumnMapping(columnMappingBuilder); Assert.Empty(mappingFragment.ColumnMappings); Assert.Empty(mappingFragment.Properties); }
public void Can_get_flattened_properties_for_nested_mapping() { var mappingFragment = new StorageMappingFragment( new EntitySet(), new StorageEntityTypeMapping( new StorageEntitySetMapping( new EntitySet(), new StorageEntityContainerMapping(new EntityContainer("C", DataSpace.CSpace)))), false); Assert.Empty(mappingFragment.ColumnMappings); var columnProperty = new EdmProperty("C"); var property1 = EdmProperty.Complex("P1", new ComplexType("CT")); var property2 = new EdmProperty("P2"); var columnMappingBuilder1 = new ColumnMappingBuilder(columnProperty, new[] { property1, property2 }); mappingFragment.AddColumnMapping(columnMappingBuilder1); var columnMappingBuilder2 = new ColumnMappingBuilder(columnProperty, new[] { property2 }); mappingFragment.AddColumnMapping(columnMappingBuilder2); var columnMappingBuilders = mappingFragment.FlattenedProperties.ToList(); Assert.Equal(2, columnMappingBuilders.Count()); Assert.True(columnMappingBuilder1.PropertyPath.SequenceEqual(columnMappingBuilders.First().PropertyPath)); Assert.True(columnMappingBuilder2.PropertyPath.SequenceEqual(columnMappingBuilders.Last().PropertyPath)); }
public void Apply_should_ignore_non_primitive_type() { var entityType = new EntityType(); var property1 = EdmProperty.Complex("Id", new ComplexType("C")); entityType.AddMember(property1); var property = property1; ((IEdmConvention <EntityType>) new IdKeyDiscoveryConvention()).Apply(entityType, new EdmModel()); Assert.False(entityType.DeclaredKeyProperties.Contains(property)); }
private EdmProperty MapPrimitiveOrComplexOrEnumProperty( PropertyInfo propertyInfo, Func <StructuralTypeConfiguration> structuralTypeConfiguration, bool discoverComplexTypes = false) { DebugCheck.NotNull(propertyInfo); var property = propertyInfo.AsEdmPrimitiveProperty(); if (property == null) { var propertyType = propertyInfo.PropertyType; var complexType = _typeMapper.MapComplexType(propertyType, discoverComplexTypes); if (complexType != null) { property = EdmProperty.Complex(propertyInfo.Name, complexType); } else { var isNullable = propertyType.TryUnwrapNullableType(out propertyType); if (propertyType.IsEnum) { var enumType = _typeMapper.MapEnumType(propertyType); if (enumType != null) { property = EdmProperty.Enum(propertyInfo.Name, enumType); property.Nullable = isNullable; } } } } if (property != null) { property.SetClrPropertyInfo(propertyInfo); new AttributeMapper(_typeMapper.MappingContext.AttributeProvider) .Map(propertyInfo, property.Annotations); if (!property.IsComplexType) { _typeMapper.MappingContext.ConventionsConfiguration.ApplyPropertyConfiguration( propertyInfo, () => structuralTypeConfiguration().Property(new PropertyPath(propertyInfo)), _typeMapper.MappingContext.ModelConfiguration); } } return(property); }