/// <summary>Convert CSpace TypeMetadata into OSpace TypeMetadata</summary> /// <param name="cdmType"></param> /// <returns>OSpace type metadata</returns> private EdmType ConvertCSpaceToOSpaceType(EdmType cdmType) { EdmType clrType = null; if (Helper.IsCollectionType(cdmType)) { EdmType elemType = ConvertCSpaceToOSpaceType(((CollectionType)cdmType).TypeUsage.EdmType); clrType = new CollectionType(elemType); } else if (Helper.IsRowType(cdmType)) { List <EdmProperty> clrProperties = new List <EdmProperty>(); foreach (EdmProperty column in ((RowType)cdmType).Properties) { EdmType clrPropertyType = ConvertCSpaceToOSpaceType(column.TypeUsage.EdmType); EdmProperty clrProperty = new EdmProperty(column.Name, TypeUsage.Create(clrPropertyType)); clrProperties.Add(clrProperty); } clrType = new RowType(clrProperties, ((RowType)cdmType).InitializerMetadata); } else if (Helper.IsRefType(cdmType)) { clrType = new RefType((EntityType)ConvertCSpaceToOSpaceType(((RefType)cdmType).ElementType)); } else if (Helper.IsPrimitiveType(cdmType)) { clrType = m_objectCollection.GetMappedPrimitiveType(((PrimitiveType)cdmType).PrimitiveTypeKind); } else { clrType = ((ObjectTypeMapping)GetMap(cdmType)).ClrType; } Debug.Assert((null != clrType), "null converted clr type"); return(clrType); }
// <summary> // Constructor to create an instance of DefaultObjectMappingItemCollection. // To start with we will create a Schema under which maps will be created. // </summary> public DefaultObjectMappingItemCollection( EdmItemCollection edmCollection, ObjectItemCollection objectCollection) : base(DataSpace.OCSpace) { DebugCheck.NotNull(edmCollection); DebugCheck.NotNull(objectCollection); _edmCollection = edmCollection; _objectCollection = objectCollection; var cspaceTypes = _edmCollection.GetPrimitiveTypes(); foreach (var type in cspaceTypes) { var ospaceType = _objectCollection.GetMappedPrimitiveType(type.PrimitiveTypeKind); Debug.Assert(ospaceType != null, "all primitive type must have been loaded"); AddInternalMapping(new ObjectTypeMapping(ospaceType, type), _clrTypeIndexes, _edmTypeIndexes); } }
// <summary> // Constructor to create an instance of DefaultObjectMappingItemCollection. // To start with we will create a Schema under which maps will be created. // </summary> public DefaultObjectMappingItemCollection( EdmItemCollection edmCollection, ObjectItemCollection objectCollection) : base(DataSpace.OCSpace) { DebugCheck.NotNull(edmCollection); DebugCheck.NotNull(objectCollection); _edmCollection = edmCollection; _objectCollection = objectCollection; var cspaceTypes = _edmCollection.GetPrimitiveTypes(); foreach (var type in cspaceTypes) { var ospaceType = _objectCollection.GetMappedPrimitiveType(type.PrimitiveTypeKind); Debug.Assert(ospaceType != null, "all primitive type must have been loaded"); AddInternalMapping(new ObjectTypeMapping(ospaceType, type), _clrTypeIndexes, _edmTypeIndexes); } }