Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / EntityModel / SchemaObjectModel / ReferentialConstraintRoleElement.cs / 1305376 / ReferentialConstraintRoleElement.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.Xml; using System.Data; using System.Data.Metadata.Edm; namespace System.Data.EntityModel.SchemaObjectModel { ////// Represents an role element in referential constraint element. /// internal sealed class ReferentialConstraintRoleElement : SchemaElement { private List_roleProperties; private IRelationshipEnd _end; /// /// Constructs an EntityContainerAssociationSetEnd /// /// Reference to the schema element. public ReferentialConstraintRoleElement(ReferentialConstraint parentElement) : base( parentElement ) { } public IListRoleProperties { get { if (_roleProperties == null) { _roleProperties = new List (); } return _roleProperties; } } public IRelationshipEnd End { get { return _end; } } protected override bool HandleElement(XmlReader reader) { if (base.HandleElement(reader)) { return true; } else if (CanHandleElement(reader, XmlConstants.PropertyRef)) { HandlePropertyRefElement(reader); return true; } return false; } protected override bool HandleAttribute(XmlReader reader) { if (CanHandleAttribute(reader, XmlConstants.Role)) { HandleRoleAttribute(reader); return true; } return false; } /// /// /// /// private void HandlePropertyRefElement(XmlReader reader) { PropertyRefElement property = new PropertyRefElement(ParentElement); property.Parse(reader); this.RoleProperties.Add(property); } private void HandleRoleAttribute(XmlReader reader) { string roleName; Utils.GetString(Schema, reader, out roleName); this.Name = roleName; } ////// Used during the resolve phase to resolve the type name to the object that represents that type /// internal override void ResolveTopLevelNames() { Debug.Assert(!String.IsNullOrEmpty(this.Name), "RoleName should never be empty"); IRelationship relationship = (IRelationship)this.ParentElement.ParentElement; if (!relationship.TryGetEnd(this.Name, out _end)) { AddError(ErrorCode.InvalidRoleInRelationshipConstraint, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.InvalidEndRoleInRelationshipConstraint(this.Name, relationship.Name)); return; } // we are gauranteed that the _end has gone through ResolveNames, but // we are not gauranteed that it was successful if (_end.Type == null) { // an error has already been added for this return; } } internal override void Validate() { base.Validate(); // we can't resolve these names until validate because they will reference properties and types // that may not be resolved when this objects ResolveNames gets called Debug.Assert(_roleProperties != null, "xsd should have verified that there should be atleast one property ref element in referential role element"); foreach (PropertyRefElement property in _roleProperties) { if (!property.ResolveNames((SchemaEntityType)_end.Type)) { AddError(ErrorCode.InvalidPropertyInRelationshipConstraint, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.InvalidPropertyInRelationshipConstraint( property.Name, this.Name)); } } } } } // 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.Xml; using System.Data; using System.Data.Metadata.Edm; namespace System.Data.EntityModel.SchemaObjectModel { ////// Represents an role element in referential constraint element. /// internal sealed class ReferentialConstraintRoleElement : SchemaElement { private List_roleProperties; private IRelationshipEnd _end; /// /// Constructs an EntityContainerAssociationSetEnd /// /// Reference to the schema element. public ReferentialConstraintRoleElement(ReferentialConstraint parentElement) : base( parentElement ) { } public IListRoleProperties { get { if (_roleProperties == null) { _roleProperties = new List (); } return _roleProperties; } } public IRelationshipEnd End { get { return _end; } } protected override bool HandleElement(XmlReader reader) { if (base.HandleElement(reader)) { return true; } else if (CanHandleElement(reader, XmlConstants.PropertyRef)) { HandlePropertyRefElement(reader); return true; } return false; } protected override bool HandleAttribute(XmlReader reader) { if (CanHandleAttribute(reader, XmlConstants.Role)) { HandleRoleAttribute(reader); return true; } return false; } /// /// /// /// private void HandlePropertyRefElement(XmlReader reader) { PropertyRefElement property = new PropertyRefElement(ParentElement); property.Parse(reader); this.RoleProperties.Add(property); } private void HandleRoleAttribute(XmlReader reader) { string roleName; Utils.GetString(Schema, reader, out roleName); this.Name = roleName; } ////// Used during the resolve phase to resolve the type name to the object that represents that type /// internal override void ResolveTopLevelNames() { Debug.Assert(!String.IsNullOrEmpty(this.Name), "RoleName should never be empty"); IRelationship relationship = (IRelationship)this.ParentElement.ParentElement; if (!relationship.TryGetEnd(this.Name, out _end)) { AddError(ErrorCode.InvalidRoleInRelationshipConstraint, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.InvalidEndRoleInRelationshipConstraint(this.Name, relationship.Name)); return; } // we are gauranteed that the _end has gone through ResolveNames, but // we are not gauranteed that it was successful if (_end.Type == null) { // an error has already been added for this return; } } internal override void Validate() { base.Validate(); // we can't resolve these names until validate because they will reference properties and types // that may not be resolved when this objects ResolveNames gets called Debug.Assert(_roleProperties != null, "xsd should have verified that there should be atleast one property ref element in referential role element"); foreach (PropertyRefElement property in _roleProperties) { if (!property.ResolveNames((SchemaEntityType)_end.Type)) { AddError(ErrorCode.InvalidPropertyInRelationshipConstraint, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.InvalidPropertyInRelationshipConstraint( property.Name, this.Name)); } } } } } // 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
- SendMessageContent.cs
- SplashScreen.cs
- SecurityUtils.cs
- WpfGeneratedKnownTypes.cs
- MoveSizeWinEventHandler.cs
- IgnoreFileBuildProvider.cs
- CustomCredentialPolicy.cs
- ResourceContainer.cs
- AspNetSynchronizationContext.cs
- FlatButtonAppearance.cs
- DataObjectPastingEventArgs.cs
- WebPartZoneBase.cs
- Bitmap.cs
- StickyNoteHelper.cs
- ComEventsSink.cs
- SendAgentStatusRequest.cs
- Stream.cs
- SQLInt16.cs
- TextControlDesigner.cs
- Funcletizer.cs
- ContextInformation.cs
- CodeExporter.cs
- RegistryPermission.cs
- RtType.cs
- SoundPlayer.cs
- SoapTransportImporter.cs
- COSERVERINFO.cs
- TypeKeyValue.cs
- WebPartConnectionsConnectVerb.cs
- OracleConnection.cs
- cookieexception.cs
- RegexInterpreter.cs
- DnsPermission.cs
- InstanceLockQueryResult.cs
- PropertyPath.cs
- ClientApiGenerator.cs
- UnSafeCharBuffer.cs
- LiteralSubsegment.cs
- XmlSerializationReader.cs
- EntityDesignerBuildProvider.cs
- DispatcherOperation.cs
- UnknownBitmapEncoder.cs
- CreateUserWizardStep.cs
- IncrementalReadDecoders.cs
- DataSourceCache.cs
- TempFiles.cs
- ConnectionInterfaceCollection.cs
- OutputWindow.cs
- XamlSerializer.cs
- ComponentEvent.cs
- XhtmlConformanceSection.cs
- RemotingService.cs
- DictionaryContent.cs
- GraphicsContainer.cs
- DropSource.cs
- WebContext.cs
- ToolStripContentPanel.cs
- ProxyHwnd.cs
- DoubleAnimation.cs
- LabelEditEvent.cs
- Action.cs
- DropTarget.cs
- PathFigureCollectionValueSerializer.cs
- Attributes.cs
- _SpnDictionary.cs
- CatalogPartCollection.cs
- ViewGenerator.cs
- GeometryCollection.cs
- ProcessModelSection.cs
- SplitterDesigner.cs
- SecurityElement.cs
- AccessedThroughPropertyAttribute.cs
- DataComponentMethodGenerator.cs
- WindowsGrip.cs
- ImageAnimator.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- Region.cs
- pingexception.cs
- VisualStyleTypesAndProperties.cs
- BuildTopDownAttribute.cs
- FrameworkElementAutomationPeer.cs
- SQLCharsStorage.cs
- MaterialGroup.cs
- WebPartRestoreVerb.cs
- JavaScriptString.cs
- baseshape.cs
- SerializerProvider.cs
- TaskExtensions.cs
- NotImplementedException.cs
- BinaryObjectReader.cs
- ColumnMapVisitor.cs
- PassportAuthenticationModule.cs
- BamlRecordWriter.cs
- _HelperAsyncResults.cs
- Cursor.cs
- ValidationService.cs
- InputLanguage.cs
- TextRange.cs
- ByeMessage11.cs
- ListChangedEventArgs.cs