Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / EntityModel / SchemaObjectModel / ModelFunction.cs / 1305376 / ModelFunction.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- 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; namespace System.Data.EntityModel.SchemaObjectModel { ////// class representing the Schema element in the schema /// internal class ModelFunction : Function { protected TypeUsageBuilder _typeUsageBuilder; #region Public Methods ////// ctor for a schema function /// public ModelFunction(Schema parentElement) : base(parentElement) { _isComposable = true; _typeUsageBuilder = new TypeUsageBuilder(this); } #endregion public override SchemaType Type { get { return this._type; } } internal TypeUsage TypeUsage { get { if (_typeUsageBuilder.TypeUsage == null) { return null; } else if (CollectionKind != CollectionKind.None) { return TypeUsage.Create(new CollectionType(_typeUsageBuilder.TypeUsage)); } else { return _typeUsageBuilder.TypeUsage; } } } internal void ValidateAndSetTypeUsage(ScalarType scalar) { _typeUsageBuilder.ValidateAndSetTypeUsage(scalar, false); } #region Protected Properties protected override bool HandleElement(XmlReader reader) { if (base.HandleElement(reader)) { return true; } else if (CanHandleElement(reader, XmlConstants.DefiningExpression)) { HandleDefiningExpressionElment(reader); return true; } else if (CanHandleElement(reader, XmlConstants.Parameter)) { HandleParameterElement(reader); return true; } return false; } protected override void HandleReturnTypeAttribute(XmlReader reader) { base.HandleReturnTypeAttribute(reader); _isComposable = true; } protected override bool HandleAttribute(XmlReader reader) { if (base.HandleAttribute(reader)) { return true; } else if (_typeUsageBuilder.HandleAttribute(reader)) { return true; } return false; } internal override void ResolveTopLevelNames() { if (null != UnresolvedReturnType) { if (Schema.ResolveTypeName(this, UnresolvedReturnType, out _type)) { if (_type is ScalarType) { _typeUsageBuilder.ValidateAndSetTypeUsage(_type as ScalarType, false); } } } foreach (Parameter parameter in this.Parameters) { parameter.ResolveTopLevelNames(); } if (ReturnType != null) { ReturnType.ResolveTopLevelNames(); } } #endregion private void HandleDefiningExpressionElment(XmlReader reader) { Debug.Assert(reader != null); FunctionCommandText commandText = new FunctionCommandText(this); commandText.Parse(reader); _commandText = commandText; } 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); } if (_type == null && _returnType == null) { //Return type not declared as either attribute or subelement AddError(ErrorCode.ModelFunctionReturnTypeNotDeclared, EdmSchemaErrorSeverity.Error, Strings.ReturnTypeMustBeDeclared(FQName)); } if (_type != null && _isRefType && !(_type is SchemaEntityType)) { //Ref type refers to non entity type AddError(ErrorCode.ReferenceToNonEntityType, EdmSchemaErrorSeverity.Error, Strings.ReferenceToNonEntityType(_type.FQName)); } foreach (var param in _parameters) { param.ValidateForModelFunction(); } if (_returnType != null) { _returnType.ValidateForModelFunction(); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- 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; namespace System.Data.EntityModel.SchemaObjectModel { ////// class representing the Schema element in the schema /// internal class ModelFunction : Function { protected TypeUsageBuilder _typeUsageBuilder; #region Public Methods ////// ctor for a schema function /// public ModelFunction(Schema parentElement) : base(parentElement) { _isComposable = true; _typeUsageBuilder = new TypeUsageBuilder(this); } #endregion public override SchemaType Type { get { return this._type; } } internal TypeUsage TypeUsage { get { if (_typeUsageBuilder.TypeUsage == null) { return null; } else if (CollectionKind != CollectionKind.None) { return TypeUsage.Create(new CollectionType(_typeUsageBuilder.TypeUsage)); } else { return _typeUsageBuilder.TypeUsage; } } } internal void ValidateAndSetTypeUsage(ScalarType scalar) { _typeUsageBuilder.ValidateAndSetTypeUsage(scalar, false); } #region Protected Properties protected override bool HandleElement(XmlReader reader) { if (base.HandleElement(reader)) { return true; } else if (CanHandleElement(reader, XmlConstants.DefiningExpression)) { HandleDefiningExpressionElment(reader); return true; } else if (CanHandleElement(reader, XmlConstants.Parameter)) { HandleParameterElement(reader); return true; } return false; } protected override void HandleReturnTypeAttribute(XmlReader reader) { base.HandleReturnTypeAttribute(reader); _isComposable = true; } protected override bool HandleAttribute(XmlReader reader) { if (base.HandleAttribute(reader)) { return true; } else if (_typeUsageBuilder.HandleAttribute(reader)) { return true; } return false; } internal override void ResolveTopLevelNames() { if (null != UnresolvedReturnType) { if (Schema.ResolveTypeName(this, UnresolvedReturnType, out _type)) { if (_type is ScalarType) { _typeUsageBuilder.ValidateAndSetTypeUsage(_type as ScalarType, false); } } } foreach (Parameter parameter in this.Parameters) { parameter.ResolveTopLevelNames(); } if (ReturnType != null) { ReturnType.ResolveTopLevelNames(); } } #endregion private void HandleDefiningExpressionElment(XmlReader reader) { Debug.Assert(reader != null); FunctionCommandText commandText = new FunctionCommandText(this); commandText.Parse(reader); _commandText = commandText; } 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); } if (_type == null && _returnType == null) { //Return type not declared as either attribute or subelement AddError(ErrorCode.ModelFunctionReturnTypeNotDeclared, EdmSchemaErrorSeverity.Error, Strings.ReturnTypeMustBeDeclared(FQName)); } if (_type != null && _isRefType && !(_type is SchemaEntityType)) { //Ref type refers to non entity type AddError(ErrorCode.ReferenceToNonEntityType, EdmSchemaErrorSeverity.Error, Strings.ReferenceToNonEntityType(_type.FQName)); } foreach (var param in _parameters) { param.ValidateForModelFunction(); } if (_returnType != null) { _returnType.ValidateForModelFunction(); } } } } // 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
- GregorianCalendarHelper.cs
- EntitySet.cs
- RuntimeConfigLKG.cs
- X509Certificate2.cs
- MessageQueueCriteria.cs
- CommonRemoteMemoryBlock.cs
- BinHexDecoder.cs
- NullRuntimeConfig.cs
- KeyFrames.cs
- WpfKnownMemberInvoker.cs
- StorageBasedPackageProperties.cs
- XPathDescendantIterator.cs
- AppSettings.cs
- WebPartDeleteVerb.cs
- CancellableEnumerable.cs
- ToolBar.cs
- FixedTextContainer.cs
- DocumentReferenceCollection.cs
- WebServicesInteroperability.cs
- PeerInvitationResponse.cs
- DataGridViewRowCollection.cs
- PageCatalogPart.cs
- Asn1IntegerConverter.cs
- diagnosticsswitches.cs
- Win32KeyboardDevice.cs
- StylesEditorDialog.cs
- ListComponentEditorPage.cs
- ContourSegment.cs
- WeakReference.cs
- ReadContentAsBinaryHelper.cs
- ResourceLoader.cs
- ParseChildrenAsPropertiesAttribute.cs
- ISAPIWorkerRequest.cs
- DoubleConverter.cs
- SupportedAddressingMode.cs
- GridPattern.cs
- InProcStateClientManager.cs
- LambdaCompiler.Logical.cs
- ActivationArguments.cs
- TextCompositionEventArgs.cs
- OleDbMetaDataFactory.cs
- DataObjectEventArgs.cs
- HashAlgorithm.cs
- Random.cs
- InvalidCommandTreeException.cs
- ProcessHostServerConfig.cs
- DataGridDetailsPresenterAutomationPeer.cs
- SmtpAuthenticationManager.cs
- XPathScanner.cs
- CommentGlyph.cs
- References.cs
- PageEventArgs.cs
- IApplicationTrustManager.cs
- ChangePassword.cs
- PropertyEmitterBase.cs
- EntityTypeEmitter.cs
- Source.cs
- Compilation.cs
- SHA512.cs
- SelfIssuedSamlTokenFactory.cs
- MyContact.cs
- Simplifier.cs
- ReadWriteSpinLock.cs
- Merger.cs
- WindowsImpersonationContext.cs
- InternalsVisibleToAttribute.cs
- MemoryPressure.cs
- ValidationException.cs
- WebPartHelpVerb.cs
- EdmRelationshipRoleAttribute.cs
- DEREncoding.cs
- _KerberosClient.cs
- Int32RectValueSerializer.cs
- ProfileService.cs
- WindowsFormsHostAutomationPeer.cs
- XslVisitor.cs
- ComponentCommands.cs
- TextEditorParagraphs.cs
- ForwardPositionQuery.cs
- FixedSOMPageElement.cs
- VirtualPathProvider.cs
- BrowserDefinition.cs
- CapabilitiesState.cs
- TitleStyle.cs
- documentsequencetextview.cs
- BamlTreeMap.cs
- CodeAssignStatement.cs
- HiddenField.cs
- CancellationTokenSource.cs
- BamlReader.cs
- DataGridViewComponentPropertyGridSite.cs
- _MultipleConnectAsync.cs
- XmlCharType.cs
- UrlPropertyAttribute.cs
- MsmqInputMessage.cs
- VerificationAttribute.cs
- SystemIcmpV4Statistics.cs
- ListSortDescriptionCollection.cs
- SimpleType.cs
- RoutingConfiguration.cs