1 //---------------------------------------------------------------------
2 // <copyright file="FacetEnabledSchemaElement.cs" company="Microsoft">
3 // Copyright (c) Microsoft Corporation. All rights reserved.
7 // @backupOwner Microsoft
8 //---------------------------------------------------------------------
11 using System.Collections.Generic;
14 using System.Data.Metadata.Edm;
15 using System.Diagnostics;
18 namespace System.Data.EntityModel.SchemaObjectModel
20 internal abstract class FacetEnabledSchemaElement : SchemaElement
22 protected SchemaType _type = null;
23 protected string _unresolvedType = null;
24 protected TypeUsageBuilder _typeUsageBuilder;
28 internal new Function ParentElement
32 return base.ParentElement as Function;
36 internal SchemaType Type
44 internal virtual TypeUsage TypeUsage
48 return _typeUsageBuilder.TypeUsage;
52 internal TypeUsageBuilder TypeUsageBuilder
56 return _typeUsageBuilder;
60 internal bool HasUserDefinedFacets
64 return _typeUsageBuilder.HasUserDefinedFacets;
68 internal string UnresolvedType
72 return _unresolvedType;
76 _unresolvedType = value;
86 /// <param name="parentElement"></param>
87 internal FacetEnabledSchemaElement(Function parentElement)
93 internal FacetEnabledSchemaElement(SchemaElement parentElement)
99 internal override void ResolveTopLevelNames()
101 base.ResolveTopLevelNames();
103 Debug.Assert(this.Type == null, "This must be resolved exactly once");
105 if (Schema.ResolveTypeName(this, UnresolvedType, out _type))
107 if (Schema.DataModel == SchemaDataModelOption.ProviderManifestModel && _typeUsageBuilder.HasUserDefinedFacets)
109 bool isInProviderManifest = Schema.DataModel == SchemaDataModelOption.ProviderManifestModel;
110 _typeUsageBuilder.ValidateAndSetTypeUsage((ScalarType)_type, !isInProviderManifest);
115 internal void ValidateAndSetTypeUsage(ScalarType scalar)
117 _typeUsageBuilder.ValidateAndSetTypeUsage(scalar, false);
120 internal void ValidateAndSetTypeUsage(EdmType edmType)
122 _typeUsageBuilder.ValidateAndSetTypeUsage(edmType, false);
127 protected override bool HandleAttribute(XmlReader reader)
129 if (base.HandleAttribute(reader))
133 else if (_typeUsageBuilder.HandleAttribute(reader))