예제 #1
0
        internal void Configure(DbDatabaseMapping databaseMapping, DbProviderManifest providerManifest)
        {
            DebugCheck.NotNull(databaseMapping);
            DebugCheck.NotNull(providerManifest);

            foreach (var structuralTypeConfiguration
                     in databaseMapping.Model.ComplexTypes
                     .Select(ct => ct.GetConfiguration())
                     .Cast <StructuralTypeConfiguration>()
                     .Where(c => c != null))
            {
                structuralTypeConfiguration.ConfigurePropertyMappings(
                    databaseMapping.GetComplexPropertyMappings(structuralTypeConfiguration.ClrType).ToList(),
                    providerManifest);
            }

            ConfigureEntityTypes(databaseMapping, databaseMapping.Model.Container.EntitySets, providerManifest);
            RemoveRedundantColumnConditions(databaseMapping);
            RemoveRedundantTables(databaseMapping);
            ConfigureTables(databaseMapping.Database);
            ConfigureDefaultSchema(databaseMapping);
            UniquifyFunctionNames(databaseMapping);
            ConfigureFunctionParameters(databaseMapping);
            RemoveDuplicateTphColumns(databaseMapping);
        }
        public void GetComplexPropertyMappings_should_return_all_complex_property_mappings_for_type()
        {
            var databaseMapping = new DbDatabaseMapping()
                                  .Initialize(new EdmModel(DataSpace.CSpace), new EdmModel(DataSpace.SSpace));
            var entitySet = new EntitySet
            {
                Name = "ES"
            };
            var entitySetMapping  = databaseMapping.AddEntitySetMapping(entitySet);
            var entityTypeMapping = new EntityTypeMapping(null);

            entitySetMapping.AddTypeMapping(entityTypeMapping);
            var entityTypeMappingFragment = new MappingFragment(entitySet, entityTypeMapping, false);

            entityTypeMapping.AddFragment(entityTypeMappingFragment);
            var complexType = new ComplexType("C");
            var propertyMapping1
                = new ColumnMappingBuilder(
                      new EdmProperty("C", TypeUsage.Create(new PrimitiveType()
            {
                DataSpace = DataSpace.SSpace
            })),
                      new[]
            {
                EdmProperty.CreateComplex("P1", complexType),
                EdmProperty.CreatePrimitive("P", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String))
            });
            var type = typeof(object);

            complexType.GetMetadataProperties().SetClrType(type);

            entityTypeMappingFragment.AddColumnMapping(propertyMapping1);

            var propertyMapping2
                = new ColumnMappingBuilder(
                      new EdmProperty("C", TypeUsage.Create(new PrimitiveType()
            {
                DataSpace = DataSpace.SSpace
            })),
                      new List <EdmProperty>
            {
                EdmProperty.CreateComplex("P3", complexType),
                EdmProperty.CreatePrimitive(
                    "P2", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)),
            });

            entityTypeMappingFragment.AddColumnMapping(propertyMapping2);

            Assert.Equal(2, databaseMapping.GetComplexPropertyMappings(typeof(object)).Count());
        }
예제 #3
0
        internal void Configure(DbDatabaseMapping databaseMapping, DbProviderManifest providerManifest)
        {
            DebugCheck.NotNull(databaseMapping);
            DebugCheck.NotNull(providerManifest);

            foreach (var structuralTypeConfiguration
                     in databaseMapping.Model.GetComplexTypes()
                     .Select(ct => ct.GetConfiguration())
                     .Cast <StructuralTypeConfiguration>()
                     .Where(c => c != null))
            {
                structuralTypeConfiguration.Configure(
                    databaseMapping.GetComplexPropertyMappings(structuralTypeConfiguration.ClrType),
                    providerManifest);
            }

            ConfigureEntityTypes(databaseMapping, providerManifest);
            RemoveRedundantColumnConditions(databaseMapping);
            RemoveRedundantTables(databaseMapping);
            ConfigureTables(databaseMapping.Database);
            ConfigureDefaultSchema(databaseMapping);
        }
예제 #4
0
 internal void Configure(DbDatabaseMapping databaseMapping, DbProviderManifest providerManifest)
 {
     foreach (StructuralTypeConfiguration typeConfiguration in databaseMapping.Model.ComplexTypes.Select <ComplexType, object>((Func <ComplexType, object>)(ct => ct.GetConfiguration())).Cast <StructuralTypeConfiguration>().Where <StructuralTypeConfiguration>((Func <StructuralTypeConfiguration, bool>)(c => c != null)))
     {
         typeConfiguration.ConfigurePropertyMappings((IList <Tuple <ColumnMappingBuilder, EntityType> >)databaseMapping.GetComplexPropertyMappings(typeConfiguration.ClrType).ToList <Tuple <ColumnMappingBuilder, EntityType> >(), providerManifest, false);
     }
     this.ConfigureEntityTypes(databaseMapping, (ICollection <EntitySet>)databaseMapping.Model.Container.EntitySets, providerManifest);
     System.Data.Entity.ModelConfiguration.Configuration.ModelConfiguration.RemoveRedundantColumnConditions(databaseMapping);
     System.Data.Entity.ModelConfiguration.Configuration.ModelConfiguration.RemoveRedundantTables(databaseMapping);
     System.Data.Entity.ModelConfiguration.Configuration.ModelConfiguration.ConfigureTables(databaseMapping.Database);
     this.ConfigureDefaultSchema(databaseMapping);
     System.Data.Entity.ModelConfiguration.Configuration.ModelConfiguration.UniquifyFunctionNames(databaseMapping);
     System.Data.Entity.ModelConfiguration.Configuration.ModelConfiguration.ConfigureFunctionParameters(databaseMapping);
     System.Data.Entity.ModelConfiguration.Configuration.ModelConfiguration.RemoveDuplicateTphColumns(databaseMapping);
 }