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
- InstanceDescriptor.cs
- WebPartRestoreVerb.cs
- TimeoutException.cs
- GZipStream.cs
- WCFBuildProvider.cs
- RegexCompiler.cs
- SecurityTokenRequirement.cs
- MatrixCamera.cs
- WebBrowsableAttribute.cs
- TemplateControlParser.cs
- TableCellsCollectionEditor.cs
- PageThemeParser.cs
- CodeExpressionStatement.cs
- DetailsViewRow.cs
- Repeater.cs
- ContentDesigner.cs
- filewebresponse.cs
- Unit.cs
- CodeParameterDeclarationExpression.cs
- ClientConfigPaths.cs
- AlternationConverter.cs
- TransactionCache.cs
- ScriptingJsonSerializationSection.cs
- PageAsyncTaskManager.cs
- MenuEventArgs.cs
- FamilyCollection.cs
- NamespaceQuery.cs
- CompositeDataBoundControl.cs
- ResourceIDHelper.cs
- WebColorConverter.cs
- NetworkCredential.cs
- ComplexTypeEmitter.cs
- PresentationTraceSources.cs
- NetTcpSection.cs
- HotSpotCollection.cs
- HttpCapabilitiesSectionHandler.cs
- DataPager.cs
- EventEntry.cs
- DataMemberConverter.cs
- ToolStripDropDown.cs
- Rect.cs
- EventInfo.cs
- OdbcStatementHandle.cs
- DBSchemaTable.cs
- SQLString.cs
- UpdatePanelTrigger.cs
- InputProviderSite.cs
- InheritedPropertyDescriptor.cs
- XMLDiffLoader.cs
- WindowsFormsSectionHandler.cs
- TextEditor.cs
- ResourcePool.cs
- x509store.cs
- PropertyConverter.cs
- RsaSecurityKey.cs
- JsonFormatReaderGenerator.cs
- SoapParser.cs
- XmlAttributeOverrides.cs
- TreeBuilderXamlTranslator.cs
- TabItemWrapperAutomationPeer.cs
- BufferModesCollection.cs
- UserControl.cs
- EntityViewGenerator.cs
- BitmapSourceSafeMILHandle.cs
- DataControlFieldCollection.cs
- BitmapEffectGroup.cs
- MultiPartWriter.cs
- RankException.cs
- Debug.cs
- TextMarkerSource.cs
- SqlMultiplexer.cs
- SeverityFilter.cs
- ExpressionCopier.cs
- DesignerVerb.cs
- DateTimePickerDesigner.cs
- Stylesheet.cs
- RSAPKCS1SignatureFormatter.cs
- TimeSpanParse.cs
- Single.cs
- Exceptions.cs
- DataBindingExpressionBuilder.cs
- HTTPNotFoundHandler.cs
- Int64KeyFrameCollection.cs
- PaperSource.cs
- BooleanConverter.cs
- DataGridPageChangedEventArgs.cs
- BorderGapMaskConverter.cs
- MediaContextNotificationWindow.cs
- SelectionUIHandler.cs
- ActiveDocumentEvent.cs
- ItemCollectionEditor.cs
- XmlDataLoader.cs
- MenuCommandsChangedEventArgs.cs
- ProcessModelInfo.cs
- UInt32.cs
- PathTooLongException.cs
- LicenseContext.cs
- SoapReflectionImporter.cs
- datacache.cs
- XDeferredAxisSource.cs