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
- peernodestatemanager.cs
- HtmlTitle.cs
- MonthCalendar.cs
- ComponentCommands.cs
- CalendarTable.cs
- FileDetails.cs
- Attributes.cs
- IPHostEntry.cs
- SubpageParaClient.cs
- Enumerable.cs
- PropertyPushdownHelper.cs
- DoubleLink.cs
- TraceUtility.cs
- ToolStripRendererSwitcher.cs
- StaticExtensionConverter.cs
- Gdiplus.cs
- VirtualDirectoryMapping.cs
- FormattedText.cs
- IgnoreSection.cs
- basenumberconverter.cs
- DataFormats.cs
- MapPathBasedVirtualPathProvider.cs
- IntranetCredentialPolicy.cs
- HostingEnvironment.cs
- DockProviderWrapper.cs
- OleDbRowUpdatingEvent.cs
- PlacementWorkspace.cs
- ButtonFlatAdapter.cs
- TemplateColumn.cs
- URLMembershipCondition.cs
- Item.cs
- ConstantProjectedSlot.cs
- HttpBrowserCapabilitiesBase.cs
- HtmlWindow.cs
- ExtensionDataObject.cs
- DataSetMappper.cs
- WebPartHelpVerb.cs
- RuleSetReference.cs
- NonParentingControl.cs
- RectAnimationUsingKeyFrames.cs
- DoubleAnimation.cs
- CookieProtection.cs
- KeyedCollection.cs
- Assembly.cs
- SqlBuffer.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- X509SecurityToken.cs
- CryptographicAttribute.cs
- ElementNotEnabledException.cs
- SerializationEventsCache.cs
- XamlPointCollectionSerializer.cs
- JsonUriDataContract.cs
- GraphicsPathIterator.cs
- ItemsPanelTemplate.cs
- PersonalizationProviderCollection.cs
- TypeConverterHelper.cs
- unitconverter.cs
- RemoteWebConfigurationHost.cs
- NegationPusher.cs
- ToolStripTextBox.cs
- FixedHighlight.cs
- CryptoKeySecurity.cs
- DefaultPrintController.cs
- DbInsertCommandTree.cs
- RemotingServices.cs
- ToolStripPanelDesigner.cs
- AuthenticateEventArgs.cs
- EntityCodeGenerator.cs
- Main.cs
- SmiXetterAccessMap.cs
- FontDriver.cs
- BitmapData.cs
- NumericExpr.cs
- AspNetRouteServiceHttpHandler.cs
- WebCodeGenerator.cs
- ClientOptions.cs
- ReferenceAssemblyAttribute.cs
- ByteAnimation.cs
- EntityDataSourceContainerNameItem.cs
- Compilation.cs
- FigureHelper.cs
- SQLInt16Storage.cs
- CornerRadiusConverter.cs
- ExpressionConverter.cs
- PenThreadPool.cs
- AssociationSet.cs
- PermissionSet.cs
- SqlTriggerContext.cs
- InternalResources.cs
- DateTime.cs
- PersonalizableAttribute.cs
- RequestDescription.cs
- odbcmetadatafactory.cs
- SingleAnimationBase.cs
- BamlLocalizationDictionary.cs
- KeySpline.cs
- DoubleSumAggregationOperator.cs
- ModelTreeEnumerator.cs
- CatalogPartChrome.cs
- XmlDataProvider.cs