Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataEntity / System / Data / EntityModel / SchemaObjectModel / StructuredProperty.cs / 2 / StructuredProperty.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.Data.Metadata.Edm; using System.Diagnostics; using System.Xml; using System.Data; using System.Reflection; using System.IO; using System.Globalization; namespace System.Data.EntityModel.SchemaObjectModel { ////// Summary description for StructuredProperty. /// internal class StructuredProperty : Property { #region Instance Fields private SchemaType _type = null; private string _unresolvedType = null; // Facets private TypeUsageBuilder _typeUsageBuilder; //Type of the Collection. By Default Single, and in case of Collections, will be either Bag or List private CollectionKind _collectionKind = CollectionKind.None; #endregion #region Static Fields //private static System.Text.RegularExpressions.Regex _binaryValueValidator = new System.Text.RegularExpressions.Regex("0[xX][0-9a-fA-F]+"); #endregion #region Public Methods ////// /// /// internal StructuredProperty(StructuredType parentElement) : base(parentElement) { _typeUsageBuilder = new TypeUsageBuilder(this); } #endregion #region Public Properties ////// /// public override SchemaType Type { get { return _type; } } ////// Returns a TypeUsage that represent this property. /// public TypeUsage TypeUsage { get { return _typeUsageBuilder.TypeUsage; } } ////// The nullablity of this property. /// public bool Nullable { get { return _typeUsageBuilder.Nullable; } } ////// /// public string Default { get { return _typeUsageBuilder.Default; } } ////// /// public object DefaultAsObject { get { return _typeUsageBuilder.DefaultAsObject; } } ////// Specifies the type of the Collection. /// By Default this is Single( i.e. not a Collection. /// And in case of Collections, will be either Bag or List /// public CollectionKind CollectionKind { get { return _collectionKind; } } #endregion #region Internal Methods ////// /// internal override void ResolveTopLevelNames() { base.ResolveTopLevelNames(); if (_type != null) { return; } _type = ResolveType(UnresolvedType); _typeUsageBuilder.ValidateDefaultValue(_type); ScalarType scalar = _type as ScalarType; if (scalar != null) { _typeUsageBuilder.ValidateAndSetTypeUsage(scalar, true); } } ////// Resolve the type string to a SchemaType object /// /// ///protected virtual SchemaType ResolveType(string typeName) { SchemaType element; if (!Schema.ResolveTypeName(this, typeName, out element)) { return null; } if (!(element is SchemaComplexType) && !(element is ScalarType)) { AddError(ErrorCode.InvalidPropertyType, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.InvalidPropertyType(UnresolvedType)); return null; } SchemaType structuredType = element as SchemaType; return element; } #endregion #region Internal Properties /// /// /// ///internal string UnresolvedType { get { return _unresolvedType; } set { _unresolvedType = value; } } #endregion #region Protected Methods /// /// /// ///internal override void Validate() { base.Validate(); //Non Complex Collections are not supported if ((_collectionKind == CollectionKind.Bag) || (_collectionKind == CollectionKind.List)) { Debug.Assert(Schema.EdmVersion != XmlConstants.EdmVersionForV1, "CollctionKind Attribute is not supported in EDM V1"); } //Nullable Complex Types are not supported in V 1.1 if (Nullable && (this.Schema.EdmVersion == XmlConstants.EdmVersionForV1) && (this._type is SchemaComplexType)) { AddError(ErrorCode.NullableComplexType, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.NullableComplexType(this.FQName)); } } #endregion #region Protected Properties protected override bool HandleAttribute(XmlReader reader) { if (base.HandleAttribute(reader)) { return true; } else if (CanHandleAttribute(reader, XmlConstants.TypeElement)) { HandleTypeAttribute(reader); return true; } else if (CanHandleAttribute(reader, XmlConstants.CollectionKind)) { HandleCollectionKindAttribute(reader); return true; } else if (_typeUsageBuilder.HandleAttribute(reader)) { return true; } return false; } #endregion #region Private Methods /// /// /// /// private void HandleTypeAttribute(XmlReader reader) { if (UnresolvedType != null) { AddError(ErrorCode.AlreadyDefined, EdmSchemaErrorSeverity.Error, reader, System.Data.Entity.Strings.PropertyTypeAlreadyDefined(reader.Name)); return; } string type; if (!Utils.GetDottedName(Schema, reader, out type)) return; UnresolvedType = type; } ////// Handles the Multiplicity attribute on the property. /// /// private void HandleCollectionKindAttribute(XmlReader reader) { string value = reader.Value; if (value == XmlConstants.CollectionKind_None) { _collectionKind = CollectionKind.None; } else { if (value == XmlConstants.CollectionKind_List) { _collectionKind = CollectionKind.List; } else if (value == XmlConstants.CollectionKind_Bag) { _collectionKind = CollectionKind.Bag; } else { Debug.Fail("Xsd should have changed", "XSD validation should have ensured that" + " Multiplicity attribute has only 'None' or 'Bag' or 'List' as the values"); return; } } } #endregion } } // 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.Data.Metadata.Edm; using System.Diagnostics; using System.Xml; using System.Data; using System.Reflection; using System.IO; using System.Globalization; namespace System.Data.EntityModel.SchemaObjectModel { ////// Summary description for StructuredProperty. /// internal class StructuredProperty : Property { #region Instance Fields private SchemaType _type = null; private string _unresolvedType = null; // Facets private TypeUsageBuilder _typeUsageBuilder; //Type of the Collection. By Default Single, and in case of Collections, will be either Bag or List private CollectionKind _collectionKind = CollectionKind.None; #endregion #region Static Fields //private static System.Text.RegularExpressions.Regex _binaryValueValidator = new System.Text.RegularExpressions.Regex("0[xX][0-9a-fA-F]+"); #endregion #region Public Methods ////// /// /// internal StructuredProperty(StructuredType parentElement) : base(parentElement) { _typeUsageBuilder = new TypeUsageBuilder(this); } #endregion #region Public Properties ////// /// public override SchemaType Type { get { return _type; } } ////// Returns a TypeUsage that represent this property. /// public TypeUsage TypeUsage { get { return _typeUsageBuilder.TypeUsage; } } ////// The nullablity of this property. /// public bool Nullable { get { return _typeUsageBuilder.Nullable; } } ////// /// public string Default { get { return _typeUsageBuilder.Default; } } ////// /// public object DefaultAsObject { get { return _typeUsageBuilder.DefaultAsObject; } } ////// Specifies the type of the Collection. /// By Default this is Single( i.e. not a Collection. /// And in case of Collections, will be either Bag or List /// public CollectionKind CollectionKind { get { return _collectionKind; } } #endregion #region Internal Methods ////// /// internal override void ResolveTopLevelNames() { base.ResolveTopLevelNames(); if (_type != null) { return; } _type = ResolveType(UnresolvedType); _typeUsageBuilder.ValidateDefaultValue(_type); ScalarType scalar = _type as ScalarType; if (scalar != null) { _typeUsageBuilder.ValidateAndSetTypeUsage(scalar, true); } } ////// Resolve the type string to a SchemaType object /// /// ///protected virtual SchemaType ResolveType(string typeName) { SchemaType element; if (!Schema.ResolveTypeName(this, typeName, out element)) { return null; } if (!(element is SchemaComplexType) && !(element is ScalarType)) { AddError(ErrorCode.InvalidPropertyType, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.InvalidPropertyType(UnresolvedType)); return null; } SchemaType structuredType = element as SchemaType; return element; } #endregion #region Internal Properties /// /// /// ///internal string UnresolvedType { get { return _unresolvedType; } set { _unresolvedType = value; } } #endregion #region Protected Methods /// /// /// ///internal override void Validate() { base.Validate(); //Non Complex Collections are not supported if ((_collectionKind == CollectionKind.Bag) || (_collectionKind == CollectionKind.List)) { Debug.Assert(Schema.EdmVersion != XmlConstants.EdmVersionForV1, "CollctionKind Attribute is not supported in EDM V1"); } //Nullable Complex Types are not supported in V 1.1 if (Nullable && (this.Schema.EdmVersion == XmlConstants.EdmVersionForV1) && (this._type is SchemaComplexType)) { AddError(ErrorCode.NullableComplexType, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.NullableComplexType(this.FQName)); } } #endregion #region Protected Properties protected override bool HandleAttribute(XmlReader reader) { if (base.HandleAttribute(reader)) { return true; } else if (CanHandleAttribute(reader, XmlConstants.TypeElement)) { HandleTypeAttribute(reader); return true; } else if (CanHandleAttribute(reader, XmlConstants.CollectionKind)) { HandleCollectionKindAttribute(reader); return true; } else if (_typeUsageBuilder.HandleAttribute(reader)) { return true; } return false; } #endregion #region Private Methods /// /// /// /// private void HandleTypeAttribute(XmlReader reader) { if (UnresolvedType != null) { AddError(ErrorCode.AlreadyDefined, EdmSchemaErrorSeverity.Error, reader, System.Data.Entity.Strings.PropertyTypeAlreadyDefined(reader.Name)); return; } string type; if (!Utils.GetDottedName(Schema, reader, out type)) return; UnresolvedType = type; } ////// Handles the Multiplicity attribute on the property. /// /// private void HandleCollectionKindAttribute(XmlReader reader) { string value = reader.Value; if (value == XmlConstants.CollectionKind_None) { _collectionKind = CollectionKind.None; } else { if (value == XmlConstants.CollectionKind_List) { _collectionKind = CollectionKind.List; } else if (value == XmlConstants.CollectionKind_Bag) { _collectionKind = CollectionKind.Bag; } else { Debug.Fail("Xsd should have changed", "XSD validation should have ensured that" + " Multiplicity attribute has only 'None' or 'Bag' or 'List' as the values"); return; } } } #endregion } } // 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
- Point3DAnimationBase.cs
- IncrementalCompileAnalyzer.cs
- ObjectSerializerFactory.cs
- Set.cs
- UInt32Storage.cs
- Membership.cs
- ActivityTrace.cs
- Transform.cs
- Matrix3D.cs
- NullableFloatMinMaxAggregationOperator.cs
- MeasureItemEvent.cs
- DetailsViewRow.cs
- PropertyChange.cs
- ControlCachePolicy.cs
- DateTimeAutomationPeer.cs
- TextParentUndoUnit.cs
- SymbolTable.cs
- LongMinMaxAggregationOperator.cs
- SrgsGrammar.cs
- DependentList.cs
- WebServiceData.cs
- Control.cs
- CompletionBookmark.cs
- UnconditionalPolicy.cs
- PrintEvent.cs
- IdnElement.cs
- FilteredAttributeCollection.cs
- httpstaticobjectscollection.cs
- StandardBindingElementCollection.cs
- GlyphingCache.cs
- SectionRecord.cs
- LocationReference.cs
- ToolbarAUtomationPeer.cs
- ByteStream.cs
- GeneratedContractType.cs
- PlainXmlWriter.cs
- DataGridViewRowsAddedEventArgs.cs
- WebPartCancelEventArgs.cs
- ResXFileRef.cs
- RSACryptoServiceProvider.cs
- ResourceDictionaryCollection.cs
- EventLogTraceListener.cs
- LifetimeServices.cs
- ObjectManager.cs
- TableRow.cs
- FontFamilyConverter.cs
- PersistChildrenAttribute.cs
- Parsers.cs
- updatecommandorderer.cs
- ContentValidator.cs
- Matrix3D.cs
- PropertyNames.cs
- BulletChrome.cs
- OptionalMessageQuery.cs
- WindowsPrincipal.cs
- MultipleFilterMatchesException.cs
- OdbcParameterCollection.cs
- ADMembershipUser.cs
- NetDataContractSerializer.cs
- _BaseOverlappedAsyncResult.cs
- PixelFormatConverter.cs
- DataGridViewCellFormattingEventArgs.cs
- PagedDataSource.cs
- NameValueConfigurationCollection.cs
- AudioLevelUpdatedEventArgs.cs
- XXXInfos.cs
- OAVariantLib.cs
- XsltContext.cs
- BitmapEffectGroup.cs
- TPLETWProvider.cs
- SkinBuilder.cs
- ContentFileHelper.cs
- DataSetMappper.cs
- EventArgs.cs
- SqlTypesSchemaImporter.cs
- ByteAnimationBase.cs
- objectresult_tresulttype.cs
- SqlBulkCopyColumnMapping.cs
- TypographyProperties.cs
- DependencyPropertyChangedEventArgs.cs
- HashCodeCombiner.cs
- FamilyMapCollection.cs
- _CacheStreams.cs
- SequenceFullException.cs
- FontCacheUtil.cs
- TagMapCollection.cs
- TokenCreationException.cs
- ByteStack.cs
- LinkAreaEditor.cs
- Content.cs
- DispatcherOperation.cs
- XmlComplianceUtil.cs
- httpserverutility.cs
- ProfileSettingsCollection.cs
- HyperLinkDataBindingHandler.cs
- ListSortDescriptionCollection.cs
- MissingMethodException.cs
- BufferModeSettings.cs
- SchemaCollectionPreprocessor.cs
- Attributes.cs