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
- FontSourceCollection.cs
- TextEffectResolver.cs
- ServiceModelPerformanceCounters.cs
- WorkflowTerminatedException.cs
- BinaryOperationBinder.cs
- GridEntryCollection.cs
- ChtmlTextWriter.cs
- ImageListUtils.cs
- CustomErrorsSectionWrapper.cs
- HostedHttpRequestAsyncResult.cs
- XappLauncher.cs
- WindowsStatusBar.cs
- PrePostDescendentsWalker.cs
- SimpleWebHandlerParser.cs
- HtmlTable.cs
- Logging.cs
- MarshalByValueComponent.cs
- FilterElement.cs
- RTTypeWrapper.cs
- GridView.cs
- SoapHttpTransportImporter.cs
- TransactionFilter.cs
- SaveWorkflowCommand.cs
- TimeZone.cs
- ConfigurationLoaderException.cs
- DataGridBoolColumn.cs
- TransformerTypeCollection.cs
- ToolStripOverflowButton.cs
- HtmlInputText.cs
- AutomationPropertyInfo.cs
- TextRangeAdaptor.cs
- ListSortDescription.cs
- ConfigurationPropertyCollection.cs
- HScrollBar.cs
- BindValidationContext.cs
- WebPartCatalogAddVerb.cs
- PropertyDescriptor.cs
- TableRowGroup.cs
- OracleParameterCollection.cs
- LiteralSubsegment.cs
- LocalFileSettingsProvider.cs
- LocationSectionRecord.cs
- CodeCompileUnit.cs
- HyperlinkAutomationPeer.cs
- Int16Converter.cs
- OverrideMode.cs
- PeerObject.cs
- SimpleBitVector32.cs
- LocalBuilder.cs
- SmtpNegotiateAuthenticationModule.cs
- ScriptResourceHandler.cs
- UnSafeCharBuffer.cs
- SelectionProviderWrapper.cs
- CatalogPartChrome.cs
- ApplicationSecurityInfo.cs
- X500Name.cs
- Expression.cs
- WebPartVerbsEventArgs.cs
- IconBitmapDecoder.cs
- StickyNoteAnnotations.cs
- MouseEventArgs.cs
- TypeToTreeConverter.cs
- LineVisual.cs
- SamlConditions.cs
- lengthconverter.cs
- DBSqlParser.cs
- XmlNullResolver.cs
- ExceptionNotification.cs
- CodeAccessPermission.cs
- ActivationWorker.cs
- PerformanceCounterPermissionEntryCollection.cs
- AbstractSvcMapFileLoader.cs
- _UriTypeConverter.cs
- RegexCompilationInfo.cs
- TraceContext.cs
- X509ThumbprintKeyIdentifierClause.cs
- ManipulationDeltaEventArgs.cs
- BitmapMetadata.cs
- DetailsViewUpdatedEventArgs.cs
- ConstraintCollection.cs
- UnicastIPAddressInformationCollection.cs
- MultiPageTextView.cs
- Transform3DGroup.cs
- StylusPlugin.cs
- Table.cs
- IdentityNotMappedException.cs
- FunctionImportMapping.cs
- DbProviderFactory.cs
- EdmComplexPropertyAttribute.cs
- Environment.cs
- FieldNameLookup.cs
- RuleSettings.cs
- ComPlusServiceHost.cs
- UniqueEventHelper.cs
- OleStrCAMarshaler.cs
- DataRelation.cs
- ExpressionParser.cs
- ThreadStaticAttribute.cs
- SupportsEventValidationAttribute.cs
- Html32TextWriter.cs