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
- ElementFactory.cs
- ETagAttribute.cs
- PipelineModuleStepContainer.cs
- StorageComplexPropertyMapping.cs
- DefaultBindingPropertyAttribute.cs
- CodeMemberMethod.cs
- CustomErrorCollection.cs
- TextSerializer.cs
- PathSegment.cs
- XmlSchemaFacet.cs
- XslAstAnalyzer.cs
- ListViewItem.cs
- CodeConditionStatement.cs
- HierarchicalDataBoundControl.cs
- activationcontext.cs
- SecurityVersion.cs
- AutomationAttributeInfo.cs
- FaultReason.cs
- EmptyQuery.cs
- EntitySqlQueryState.cs
- ExpressionConverter.cs
- SchemaMerger.cs
- InternalCache.cs
- ObjectDataSourceMethodEventArgs.cs
- StateDesigner.TransitionInfo.cs
- PackageRelationshipCollection.cs
- SqlInfoMessageEvent.cs
- MonitoringDescriptionAttribute.cs
- ListControl.cs
- EventSource.cs
- ExpressionWriter.cs
- ScriptComponentDescriptor.cs
- TabControlEvent.cs
- WizardStepBase.cs
- Window.cs
- HybridObjectCache.cs
- HandlerMappingMemo.cs
- SafeLibraryHandle.cs
- DiagnosticStrings.cs
- XhtmlMobileTextWriter.cs
- OutOfProcStateClientManager.cs
- TableRowCollection.cs
- DNS.cs
- BinaryWriter.cs
- ThemeDirectoryCompiler.cs
- ProcessHostServerConfig.cs
- ItemContainerPattern.cs
- SelectionUIService.cs
- AttributeInfo.cs
- GetPageCompletedEventArgs.cs
- TimeoutValidationAttribute.cs
- _ShellExpression.cs
- RuleSettings.cs
- MultipleViewProviderWrapper.cs
- AutomationAttributeInfo.cs
- SetUserLanguageRequest.cs
- InternalSafeNativeMethods.cs
- XamlTemplateSerializer.cs
- XmlBoundElement.cs
- TypeDelegator.cs
- NavigateEvent.cs
- QilList.cs
- CodeMemberProperty.cs
- References.cs
- ClientSettingsStore.cs
- ConsoleCancelEventArgs.cs
- WebPartCatalogCloseVerb.cs
- CachedTypeface.cs
- CodeArrayIndexerExpression.cs
- DataGridViewIntLinkedList.cs
- CreateUserWizardDesigner.cs
- xsdvalidator.cs
- DataGridItemCollection.cs
- TemplatePropertyEntry.cs
- RenderingEventArgs.cs
- SchemaEntity.cs
- ShaderRenderModeValidation.cs
- UnwrappedTypesXmlSerializerManager.cs
- SpeechEvent.cs
- NameSpaceExtractor.cs
- HttpListenerPrefixCollection.cs
- RayMeshGeometry3DHitTestResult.cs
- TextParaLineResult.cs
- Keyboard.cs
- CompoundFileStreamReference.cs
- EndpointIdentityExtension.cs
- PropertyDescriptorComparer.cs
- DaylightTime.cs
- SoapAttributeAttribute.cs
- Track.cs
- SessionEndingEventArgs.cs
- AppDomainUnloadedException.cs
- ProcessModelSection.cs
- MDIClient.cs
- DataGridViewLayoutData.cs
- MenuDesigner.cs
- NativeWindow.cs
- StickyNoteHelper.cs
- WebRequestModulesSection.cs
- Errors.cs