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
- VisualTreeHelper.cs
- PerformanceCounterPermissionEntry.cs
- HandlerWithFactory.cs
- UnsafeNetInfoNativeMethods.cs
- DateBoldEvent.cs
- ConfigurationCollectionAttribute.cs
- FrugalList.cs
- TypographyProperties.cs
- PanelDesigner.cs
- QueryCursorEventArgs.cs
- PeerTransportElement.cs
- SchemaMerger.cs
- DataControlLinkButton.cs
- SkipStoryboardToFill.cs
- HttpChannelBindingToken.cs
- ServiceNameCollection.cs
- PageDeviceFont.cs
- RowToParametersTransformer.cs
- ApplicationInterop.cs
- SqlUdtInfo.cs
- DataGridViewDataConnection.cs
- FlowNode.cs
- HttpModulesSection.cs
- XPathNavigatorReader.cs
- ViewManager.cs
- ConfigurationSchemaErrors.cs
- StandardCommands.cs
- PaperSize.cs
- StringHelper.cs
- NativeRecognizer.cs
- ListDictionary.cs
- WmlSelectionListAdapter.cs
- BaseProcessor.cs
- TdsParserSafeHandles.cs
- EngineSiteSapi.cs
- RequestTimeoutManager.cs
- AccessKeyManager.cs
- PasswordRecoveryAutoFormat.cs
- Registry.cs
- DataViewSettingCollection.cs
- ComboBox.cs
- DigestTraceRecordHelper.cs
- DataTablePropertyDescriptor.cs
- InternalsVisibleToAttribute.cs
- ExeContext.cs
- MenuItemAutomationPeer.cs
- TypedTableBaseExtensions.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- CompilerGlobalScopeAttribute.cs
- ShapingWorkspace.cs
- smtppermission.cs
- InlineObject.cs
- SqlClientMetaDataCollectionNames.cs
- SBCSCodePageEncoding.cs
- BehaviorService.cs
- FilteredAttributeCollection.cs
- XmlSerializerAssemblyAttribute.cs
- ListParagraph.cs
- ServiceNameElement.cs
- ReferencedAssemblyResolver.cs
- PropertyPathConverter.cs
- FlowLayoutSettings.cs
- SettingsContext.cs
- XComponentModel.cs
- SmiEventStream.cs
- RoutedEventHandlerInfo.cs
- X500Name.cs
- HttpChannelHelper.cs
- Regex.cs
- RelationshipEnd.cs
- InputScopeAttribute.cs
- TdsRecordBufferSetter.cs
- CodeAssignStatement.cs
- ArrayWithOffset.cs
- HttpRawResponse.cs
- AmbientProperties.cs
- mansign.cs
- DefaultValueMapping.cs
- TemplateControlBuildProvider.cs
- HtmlFormParameterReader.cs
- XmlNamedNodeMap.cs
- BuildProvider.cs
- TextBox.cs
- Clipboard.cs
- SafeMarshalContext.cs
- SHA256.cs
- ReadOnlyHierarchicalDataSource.cs
- As.cs
- StrongName.cs
- EventRoute.cs
- Enum.cs
- TokenizerHelper.cs
- tooltip.cs
- OrderedDictionaryStateHelper.cs
- Int32KeyFrameCollection.cs
- UseLicense.cs
- Symbol.cs
- RijndaelManaged.cs
- DataTableNewRowEvent.cs
- ValidationRuleCollection.cs