public void Build_builds_valid_DbDatabaseMapping_for_entity_types() { var storeEntityType = EntityType.Create("foo_S", "bar_S", DataSpace.SSpace, null, null, null); var modelEntityType = EntityType.Create("foo_C", "bar_C", DataSpace.CSpace, null, null, null); var storeEntitySet = EntitySet.Create("ES_S", "Ns_S", null, null, storeEntityType, null); var storeContainer = EntityContainer.Create("C_S", DataSpace.SSpace, new[] { storeEntitySet }, null, null); var storeModel = EdmModel.CreateStoreModel(storeContainer, null, null); var modelEntitySet = EntitySet.Create("ES_C", "Ns_C", null, null, storeEntityType, null); var modelContainer = EntityContainer.Create("C_C", DataSpace.CSpace, new[] { modelEntitySet }, null, null); var mappingContext = new SimpleMappingContext(storeModel, true); mappingContext.AddMapping(storeContainer, modelContainer); mappingContext.AddMapping(storeEntitySet, modelEntitySet); mappingContext.AddMapping(storeEntityType, modelEntityType); var dbMapping = DbDatabaseMappingBuilder.Build(mappingContext).DatabaseMapping; Assert.Same(storeModel, dbMapping.Database); var entityContainerMapping = dbMapping.EntityContainerMappings.Single(); Assert.Same(storeContainer, entityContainerMapping.StorageEntityContainer); Assert.Same(modelContainer, entityContainerMapping.EdmEntityContainer); Assert.Equal(1, entityContainerMapping.EntitySetMappings.Count()); Assert.NotNull(dbMapping.Model); Assert.Same(modelContainer, dbMapping.Model.Containers.Single()); Assert.Same(modelEntityType, dbMapping.Model.EntityTypes.Single()); }
public void Build_adds_association_types_to_model() { var storeEntityType = EntityType.Create("foo_S", "bar_S", DataSpace.SSpace, null, null, null); var storeEntitySet = EntitySet.Create("ES_S", "Ns_S", null, null, storeEntityType, null); var storeContainer = EntityContainer.Create("C_S", DataSpace.SSpace, new[] { storeEntitySet }, null, null); var storeModel = EdmModel.CreateStoreModel(storeContainer, null, null); var conceptualAssociationType = AssociationType.Create("AT_C", "ns", false, DataSpace.CSpace, null, null, null, null); var associationSet = AssociationSet.Create("AS_C", conceptualAssociationType, null, null, null); var modelContainer = EntityContainer.Create("C_C", DataSpace.CSpace, new[] { associationSet }, null, null); var mappingContext = new SimpleMappingContext(storeModel, true); mappingContext.AddMapping(storeContainer, modelContainer); mappingContext.AddMapping(new CollapsibleEntityAssociationSets(storeEntitySet), associationSet); var model = DbDatabaseMappingBuilder.Build(mappingContext); Assert.Same(conceptualAssociationType, model.ConceptualModel.AssociationTypes.SingleOrDefault()); }
public void Build_does_not_try_map_not_mapped_functions() { var rowTypeProperty = CreateStoreProperty("p1", "int"); var storeFunction = EdmFunction.Create( "f_s", "storeModel", DataSpace.SSpace, new EdmFunctionPayload { IsComposable = true, IsFunctionImport = false, ReturnParameters = new[] { FunctionParameter.Create( "ReturnType", RowType.Create(new[] { rowTypeProperty }, null).GetCollectionType(), ParameterMode.ReturnValue) } }, null); var modelContainer = EntityContainer.Create("C_C", DataSpace.CSpace, new EntitySet[0], null, null); var storeContainer = EntityContainer.Create("C_S", DataSpace.SSpace, new EntitySet[0], null, null); var storeModel = EdmModel.CreateStoreModel(storeContainer, null, null); storeModel.AddItem(storeFunction); var mappingContext = new SimpleMappingContext(storeModel, true); mappingContext.AddMapping(storeContainer, modelContainer); var entityModel = DbDatabaseMappingBuilder.Build(mappingContext).ConceptualModel; Assert.NotNull(entityModel); Assert.Empty(entityModel.Containers.Single().FunctionImports); }
public void Build_builds_valid_DbDatabaseMapping_for_functions() { var rowTypeProperty = CreateStoreProperty("p1", "int"); var complexTypeProperty = EdmProperty.Create( "p2", TypeUsage.CreateDefaultTypeUsage(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.Int32))); var functionImportReturnComplexType = ComplexType.Create( "CT", "entityModel", DataSpace.CSpace, new[] { complexTypeProperty }, null); var storeFunction = EdmFunction.Create( "f_s", "storeModel", DataSpace.SSpace, new EdmFunctionPayload { IsComposable = true, IsFunctionImport = false, ReturnParameters = new[] { FunctionParameter.Create( "ReturnType", RowType.Create(new[] { rowTypeProperty }, null).GetCollectionType(), ParameterMode.ReturnValue) } }, null); var functionImport = EdmFunction.Create( "f_c", "entityModel", DataSpace.CSpace, new EdmFunctionPayload { IsComposable = true, IsFunctionImport = true, ReturnParameters = new[] { FunctionParameter.Create( "ReturnType", functionImportReturnComplexType.GetCollectionType(), ParameterMode.ReturnValue) } }, null); var modelContainer = EntityContainer.Create("C_C", DataSpace.CSpace, new EntitySet[0], new[] { functionImport }, null); var storeContainer = EntityContainer.Create("C_S", DataSpace.SSpace, new EntitySet[0], null, null); var storeModel = EdmModel.CreateStoreModel(storeContainer, null, null); storeModel.AddItem(storeFunction); var mappingContext = new SimpleMappingContext(storeModel, true); mappingContext.AddMapping(rowTypeProperty, complexTypeProperty); mappingContext.AddMapping(storeFunction, functionImport); mappingContext.AddMapping(storeContainer, modelContainer); var entityModel = DbDatabaseMappingBuilder.Build(mappingContext).ConceptualModel; Assert.NotNull(entityModel); Assert.Equal(new[] { "f_c" }, entityModel.Containers.Single().FunctionImports.Select(f => f.Name)); Assert.Equal(new[] { "CT" }, entityModel.ComplexTypes.Select(t => t.Name)); }