Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / EntityModel / SchemaObjectModel / TypeRefElement.cs / 1305376 / TypeRefElement.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using Som = System.Data.EntityModel.SchemaObjectModel; using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Diagnostics; using System.Globalization; using System.Xml; using System.Xml.Schema; using System.Data; using System.IO; using System.Data.Metadata.Edm; using System.Data.Entity; using System.Text; namespace System.Data.EntityModel.SchemaObjectModel { class TypeRefElement : ModelFunctionTypeElement { #region constructor ////// /// /// internal TypeRefElement(SchemaElement parentElement) : base(parentElement) { } #endregion protected override bool HandleAttribute(XmlReader reader) { if (base.HandleAttribute(reader)) { return true; } else if (CanHandleAttribute(reader, XmlConstants.TypeElement)) { HandleTypeAttribute(reader); return true; } return false; } protected void HandleTypeAttribute(XmlReader reader) { Debug.Assert(reader != null); string type; if (!Utils.GetString(Schema, reader, out type)) return; if (!Utils.ValidateDottedName(Schema, reader, type)) return; _unresolvedType = type; } internal override bool ResolveNameAndSetTypeUsage(Converter.ConversionCache convertedItemCache, DictionarynewGlobalItems) { if (_type is ScalarType) //Create and store type usage for scalar type { _typeUsageBuilder.ValidateAndSetTypeUsage(_type as ScalarType, false); _typeUsage = _typeUsageBuilder.TypeUsage; return true; } else //Try to resolve edm type. If not now, it will resolve in the second pass { EdmType edmType = (EdmType)Converter.LoadSchemaElement(_type, _type.Schema.ProviderManifest, convertedItemCache, newGlobalItems); if (edmType != null) { _typeUsageBuilder.ValidateAndSetTypeUsage(edmType, false); //use typeusagebuilder so dont lose facet information _typeUsage = _typeUsageBuilder.TypeUsage; } return _typeUsage != null; } } internal override void WriteIdentity(StringBuilder builder) { Debug.Assert(UnresolvedType != null && !UnresolvedType.Trim().Equals(String.Empty)); builder.Append(UnresolvedType); } internal override TypeUsage GetTypeUsage() { Debug.Assert(_typeUsage != null); return _typeUsage; } internal override void Validate() { base.Validate(); if (_type != null && _type is ScalarType == false && _typeUsageBuilder.HasUserDefinedFacets) { //Non-scalar return type should not have Facets AddError(ErrorCode.ModelFuncionFacetOnNonScalarType, EdmSchemaErrorSeverity.Error, Strings.FacetsOnNonScalarType(_type.FQName)); } if (_type == null && _typeUsageBuilder.HasUserDefinedFacets) { //Type attribute not specified but facets exist AddError(ErrorCode.ModelFunctionIncorrectlyPlacedFacet, EdmSchemaErrorSeverity.Error, Strings.FacetDeclarationRequiresTypeAttribute); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using Som = System.Data.EntityModel.SchemaObjectModel; using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Diagnostics; using System.Globalization; using System.Xml; using System.Xml.Schema; using System.Data; using System.IO; using System.Data.Metadata.Edm; using System.Data.Entity; using System.Text; namespace System.Data.EntityModel.SchemaObjectModel { class TypeRefElement : ModelFunctionTypeElement { #region constructor ////// /// /// internal TypeRefElement(SchemaElement parentElement) : base(parentElement) { } #endregion protected override bool HandleAttribute(XmlReader reader) { if (base.HandleAttribute(reader)) { return true; } else if (CanHandleAttribute(reader, XmlConstants.TypeElement)) { HandleTypeAttribute(reader); return true; } return false; } protected void HandleTypeAttribute(XmlReader reader) { Debug.Assert(reader != null); string type; if (!Utils.GetString(Schema, reader, out type)) return; if (!Utils.ValidateDottedName(Schema, reader, type)) return; _unresolvedType = type; } internal override bool ResolveNameAndSetTypeUsage(Converter.ConversionCache convertedItemCache, DictionarynewGlobalItems) { if (_type is ScalarType) //Create and store type usage for scalar type { _typeUsageBuilder.ValidateAndSetTypeUsage(_type as ScalarType, false); _typeUsage = _typeUsageBuilder.TypeUsage; return true; } else //Try to resolve edm type. If not now, it will resolve in the second pass { EdmType edmType = (EdmType)Converter.LoadSchemaElement(_type, _type.Schema.ProviderManifest, convertedItemCache, newGlobalItems); if (edmType != null) { _typeUsageBuilder.ValidateAndSetTypeUsage(edmType, false); //use typeusagebuilder so dont lose facet information _typeUsage = _typeUsageBuilder.TypeUsage; } return _typeUsage != null; } } internal override void WriteIdentity(StringBuilder builder) { Debug.Assert(UnresolvedType != null && !UnresolvedType.Trim().Equals(String.Empty)); builder.Append(UnresolvedType); } internal override TypeUsage GetTypeUsage() { Debug.Assert(_typeUsage != null); return _typeUsage; } internal override void Validate() { base.Validate(); if (_type != null && _type is ScalarType == false && _typeUsageBuilder.HasUserDefinedFacets) { //Non-scalar return type should not have Facets AddError(ErrorCode.ModelFuncionFacetOnNonScalarType, EdmSchemaErrorSeverity.Error, Strings.FacetsOnNonScalarType(_type.FQName)); } if (_type == null && _typeUsageBuilder.HasUserDefinedFacets) { //Type attribute not specified but facets exist AddError(ErrorCode.ModelFunctionIncorrectlyPlacedFacet, EdmSchemaErrorSeverity.Error, Strings.FacetDeclarationRequiresTypeAttribute); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HealthMonitoringSectionHelper.cs
- EntityClassGenerator.cs
- Variant.cs
- PropertyGrid.cs
- TextBlockAutomationPeer.cs
- ByteFacetDescriptionElement.cs
- TextAutomationPeer.cs
- MimeTypePropertyAttribute.cs
- activationcontext.cs
- DataKeyCollection.cs
- MenuAdapter.cs
- BindingOperations.cs
- AmbientLight.cs
- ContentWrapperAttribute.cs
- TypeContext.cs
- HttpModuleCollection.cs
- ContextMenuService.cs
- OutOfProcStateClientManager.cs
- ZoneMembershipCondition.cs
- CompilerCollection.cs
- SchemaElement.cs
- _LazyAsyncResult.cs
- KoreanLunisolarCalendar.cs
- WmlControlAdapter.cs
- SubstitutionDesigner.cs
- GridViewColumnCollection.cs
- LoginName.cs
- Help.cs
- ClientScriptManager.cs
- PassportAuthenticationModule.cs
- DrawListViewSubItemEventArgs.cs
- EntityWithChangeTrackerStrategy.cs
- RegisteredExpandoAttribute.cs
- ExecutionEngineException.cs
- FormatException.cs
- LiteralText.cs
- SafeViewOfFileHandle.cs
- Utility.cs
- EqualityComparer.cs
- IdentityManager.cs
- BitStack.cs
- CommonObjectSecurity.cs
- mansign.cs
- SqlBinder.cs
- ScriptResourceMapping.cs
- SizeAnimationClockResource.cs
- TypeDescriptor.cs
- XmlTextAttribute.cs
- ApplicationHost.cs
- SqlConnection.cs
- DataKey.cs
- DataGridBoolColumn.cs
- StructuralComparisons.cs
- HtmlForm.cs
- TaskScheduler.cs
- IPEndPoint.cs
- StringFormat.cs
- Animatable.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- Point3DCollection.cs
- DateTimeConverter.cs
- AppDomain.cs
- DesignerCategoryAttribute.cs
- TrustManager.cs
- SlipBehavior.cs
- DesignerVerb.cs
- MenuCommand.cs
- PathSegment.cs
- AvTrace.cs
- ObjectViewQueryResultData.cs
- UrlPath.cs
- Model3DCollection.cs
- MulticastDelegate.cs
- SqlConnectionPoolGroupProviderInfo.cs
- SafeFileHandle.cs
- HandlerFactoryCache.cs
- URI.cs
- SemanticResultValue.cs
- _DigestClient.cs
- Gdiplus.cs
- PreservationFileWriter.cs
- XmlNullResolver.cs
- COSERVERINFO.cs
- FlowDocument.cs
- WorkflowControlClient.cs
- WebInvokeAttribute.cs
- SimpleFileLog.cs
- NameValuePermission.cs
- ObjectView.cs
- AttachedPropertyMethodSelector.cs
- RsaSecurityKey.cs
- TypedElement.cs
- WsiProfilesElement.cs
- VoiceSynthesis.cs
- WorkerProcess.cs
- ForEachDesigner.xaml.cs
- DotAtomReader.cs
- EndpointNotFoundException.cs
- ImplicitInputBrush.cs
- KnownTypesHelper.cs