Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- LinqDataSourceContextEventArgs.cs
- BitmapEditor.cs
- FontNameConverter.cs
- RegionInfo.cs
- ListItemParagraph.cs
- SqlError.cs
- EdmRelationshipNavigationPropertyAttribute.cs
- TextDecoration.cs
- BaseTemplateCodeDomTreeGenerator.cs
- SByteStorage.cs
- ProfilePropertySettings.cs
- MatrixAnimationUsingPath.cs
- EntityClassGenerator.cs
- PrintingPermissionAttribute.cs
- RegexEditorDialog.cs
- ToolStripSeparatorRenderEventArgs.cs
- GeneralTransform3DTo2DTo3D.cs
- WebPageTraceListener.cs
- BoundPropertyEntry.cs
- BatchParser.cs
- ClientTargetCollection.cs
- TableLayoutPanel.cs
- _AcceptOverlappedAsyncResult.cs
- SqlGatherConsumedAliases.cs
- SrgsRuleRef.cs
- DummyDataSource.cs
- PropertyChangedEventArgs.cs
- WebPartManager.cs
- TerminatorSinks.cs
- OracleCommand.cs
- DataGridRowHeader.cs
- RuleSettingsCollection.cs
- SingleConverter.cs
- CommonRemoteMemoryBlock.cs
- Calendar.cs
- Int64Storage.cs
- SerializationStore.cs
- WebPartCatalogAddVerb.cs
- ButtonChrome.cs
- AutomationPropertyInfo.cs
- ContainerActivationHelper.cs
- WindowsComboBox.cs
- InputLangChangeRequestEvent.cs
- ApplicationException.cs
- ComponentManagerBroker.cs
- BitmapSizeOptions.cs
- UrlPath.cs
- XmlSerializerSection.cs
- DateTimeOffsetConverter.cs
- Geometry.cs
- SerialErrors.cs
- DefaultBinder.cs
- RenderData.cs
- DocumentPageHost.cs
- ModuleBuilder.cs
- DataGridCommandEventArgs.cs
- TraceContextEventArgs.cs
- StrokeIntersection.cs
- LayoutUtils.cs
- MutableAssemblyCacheEntry.cs
- AutomationFocusChangedEventArgs.cs
- FontInfo.cs
- ValidatedMobileControlConverter.cs
- TypeElement.cs
- UnsignedPublishLicense.cs
- IndexedString.cs
- SQLBinaryStorage.cs
- SrgsToken.cs
- HashRepartitionEnumerator.cs
- ExpressionBinding.cs
- KoreanLunisolarCalendar.cs
- FocusWithinProperty.cs
- BamlLocalizer.cs
- SignedXml.cs
- _TimerThread.cs
- ProfileSection.cs
- RadioButtonList.cs
- SQLBinaryStorage.cs
- CorrelationQuery.cs
- ConfigurationManagerHelper.cs
- SafeEventHandle.cs
- ListViewGroupConverter.cs
- ContractComponent.cs
- Script.cs
- RequestCacheEntry.cs
- ExtensionQuery.cs
- DropDownList.cs
- LinkedResource.cs
- WebControlsSection.cs
- TouchDevice.cs
- ZipIOFileItemStream.cs
- XPathAncestorIterator.cs
- VariantWrapper.cs
- ReferenceEqualityComparer.cs
- XmlTextReaderImplHelpers.cs
- ListenerSingletonConnectionReader.cs
- DefaultObjectMappingItemCollection.cs
- login.cs
- TextTreeInsertUndoUnit.cs
- EdmComplexTypeAttribute.cs