Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataEntity / System / Data / EntityModel / SchemaObjectModel / ReferentialConstraintRoleElement.cs / 2 / 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
- GlobalAllocSafeHandle.cs
- PrivilegedConfigurationManager.cs
- QilValidationVisitor.cs
- PerformanceCounterPermission.cs
- KnownTypes.cs
- EmptyStringExpandableObjectConverter.cs
- FirstMatchCodeGroup.cs
- IFormattable.cs
- ListSortDescriptionCollection.cs
- ApplicationCommands.cs
- TranslateTransform.cs
- SoapRpcServiceAttribute.cs
- BindToObject.cs
- MenuScrollingVisibilityConverter.cs
- SelectionItemPattern.cs
- SchemaImporter.cs
- AnimationClock.cs
- ArcSegment.cs
- ObjectListCommandEventArgs.cs
- GridLength.cs
- ActivityCodeDomSerializationManager.cs
- TypeBrowserDialog.cs
- XslAstAnalyzer.cs
- DBCSCodePageEncoding.cs
- CompiledELinqQueryState.cs
- TailPinnedEventArgs.cs
- SessionKeyExpiredException.cs
- ComponentEvent.cs
- OutputCacheModule.cs
- AuthenticationConfig.cs
- WebPartVerb.cs
- Model3D.cs
- Subtree.cs
- ValidationEventArgs.cs
- FlowDocumentPage.cs
- MemberDomainMap.cs
- EncryptedPackageFilter.cs
- StylusPointPropertyUnit.cs
- HtmlInputReset.cs
- FolderNameEditor.cs
- TriggerCollection.cs
- ContainsRowNumberChecker.cs
- GridViewUpdatedEventArgs.cs
- ScriptingAuthenticationServiceSection.cs
- CompilerTypeWithParams.cs
- HttpPostedFile.cs
- OrderPreservingSpoolingTask.cs
- BamlLocalizer.cs
- AnnotationHighlightLayer.cs
- Int16AnimationUsingKeyFrames.cs
- ExpressionLexer.cs
- DataGridViewDesigner.cs
- StylusPointCollection.cs
- listitem.cs
- ListView.cs
- ListSourceHelper.cs
- ValidationEventArgs.cs
- MouseOverProperty.cs
- StrongNameHelpers.cs
- StructuralCache.cs
- PrintDialog.cs
- AsyncPostBackTrigger.cs
- ReadOnlyHierarchicalDataSource.cs
- isolationinterop.cs
- DataMember.cs
- SqlDataSourceCommandEventArgs.cs
- IdentityReference.cs
- RtType.cs
- TextSerializer.cs
- DeclarativeCatalogPart.cs
- ResourceManager.cs
- SiteMapDataSourceView.cs
- PictureBox.cs
- SiteMapNodeItemEventArgs.cs
- COAUTHINFO.cs
- Int32RectValueSerializer.cs
- EncryptedPackageFilter.cs
- PaintEvent.cs
- VisualBasicExpressionConverter.cs
- ReadOnlyObservableCollection.cs
- RequestBringIntoViewEventArgs.cs
- SessionIDManager.cs
- DataPagerFieldCollection.cs
- UInt16Storage.cs
- TraceUtility.cs
- TrustSection.cs
- StructuredTypeInfo.cs
- RenderCapability.cs
- SchemaTableOptionalColumn.cs
- TextTreeUndo.cs
- CodePageUtils.cs
- CodeCommentStatement.cs
- DataGridAutoGeneratingColumnEventArgs.cs
- _Semaphore.cs
- QuotedPairReader.cs
- ScaleTransform3D.cs
- SQLInt64Storage.cs
- StringAnimationBase.cs
- TextRange.cs
- ISAPIApplicationHost.cs