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
- CodeTypeReferenceSerializer.cs
- XMLSchema.cs
- PostBackOptions.cs
- UIElementParaClient.cs
- NameValueCollection.cs
- TraceXPathNavigator.cs
- ObjectListTitleAttribute.cs
- SoapAttributeOverrides.cs
- XmlUtil.cs
- NotifyParentPropertyAttribute.cs
- BaseTreeIterator.cs
- ContentPlaceHolder.cs
- Attributes.cs
- WS2007HttpBinding.cs
- SplineQuaternionKeyFrame.cs
- WebConvert.cs
- SponsorHelper.cs
- ZipIOExtraFieldPaddingElement.cs
- PeerNameResolver.cs
- UIntPtr.cs
- EntityContainerAssociationSet.cs
- Attachment.cs
- ParameterBuilder.cs
- QueryMatcher.cs
- Literal.cs
- FlowDocumentReaderAutomationPeer.cs
- ProvideValueServiceProvider.cs
- CriticalHandle.cs
- wgx_render.cs
- EntityViewGenerationAttribute.cs
- SystemFonts.cs
- TextEffect.cs
- BehaviorDragDropEventArgs.cs
- ModuleConfigurationInfo.cs
- DesignerVerb.cs
- FontDifferentiator.cs
- CompilerParameters.cs
- RuntimeCompatibilityAttribute.cs
- NotifyCollectionChangedEventArgs.cs
- GeneralTransform3DGroup.cs
- NativeMethods.cs
- CodeNamespaceCollection.cs
- SharedConnectionListener.cs
- DataKeyArray.cs
- CriticalFinalizerObject.cs
- CacheOutputQuery.cs
- ApplicationSecurityInfo.cs
- Soap12ServerProtocol.cs
- DependencyPropertyHelper.cs
- SeekStoryboard.cs
- Main.cs
- DataContractSerializerSection.cs
- SafePipeHandle.cs
- XmlSigningNodeWriter.cs
- UpDownEvent.cs
- AmbiguousMatchException.cs
- PolicyManager.cs
- CacheEntry.cs
- CompositeFontParser.cs
- HintTextConverter.cs
- PersonalizationProviderHelper.cs
- _SecureChannel.cs
- DataRelationCollection.cs
- WhitespaceSignificantCollectionAttribute.cs
- PaintEvent.cs
- SafeNativeMethods.cs
- TakeOrSkipQueryOperator.cs
- SyntaxCheck.cs
- MemberBinding.cs
- TextTreeInsertElementUndoUnit.cs
- SafeFileHandle.cs
- HandleCollector.cs
- HMACMD5.cs
- XmlSchemaInfo.cs
- DesignerActionGlyph.cs
- MemoryResponseElement.cs
- EdmFunctionAttribute.cs
- DesignTimeParseData.cs
- Merger.cs
- DataGridHelper.cs
- DataGridViewCellStyleChangedEventArgs.cs
- StyleTypedPropertyAttribute.cs
- PolicyImporterElementCollection.cs
- ScriptManager.cs
- DateTimeConverter.cs
- DataGridViewHeaderCell.cs
- Point.cs
- Assert.cs
- OracleDateTime.cs
- DeliveryStrategy.cs
- CompilerParameters.cs
- CacheMemory.cs
- Margins.cs
- formatter.cs
- DocumentApplication.cs
- BuilderPropertyEntry.cs
- Journaling.cs
- TextElementCollection.cs
- DataControlFieldCollection.cs
- XPathParser.cs