private void ExplodeRootStructuredType(RootTypeInfo rootType) { if (rootType.FlattenedType != null) { return; } if (StructuredTypeInfo.NeedsTypeIdProperty((TypeInfo)rootType)) { rootType.AddPropertyRef((PropertyRef)TypeIdPropertyRef.Instance); if (rootType.DiscriminatorMap != null) { rootType.TypeIdKind = TypeIdKind.UserSpecified; rootType.TypeIdType = Helper.GetModelTypeUsage(rootType.DiscriminatorMap.DiscriminatorProperty); } else { rootType.TypeIdKind = TypeIdKind.Generated; rootType.TypeIdType = this.m_stringType; } } if (this.NeedsEntitySetIdProperty((TypeInfo)rootType)) { rootType.AddPropertyRef((PropertyRef)EntitySetIdPropertyRef.Instance); } if (this.NeedsNullSentinelProperty((TypeInfo)rootType)) { rootType.AddPropertyRef((PropertyRef)NullSentinelPropertyRef.Instance); } this.ExplodeRootStructuredTypeHelper((TypeInfo)rootType); if (TypeSemantics.IsEntityType(rootType.Type)) { this.AddRelProperties((TypeInfo)rootType); } this.CreateFlattenedRecordType(rootType); }