Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataEntity / System / Data / EntityModel / SchemaObjectModel / Relationship.cs / 2 / Relationship.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Data.Objects.DataClasses; using System.Collections.Generic; using System.Diagnostics; using System.Xml; using System.Data; using System.Data.Metadata.Edm; namespace System.Data.EntityModel.SchemaObjectModel { ////// Represents an Association element /// internal sealed class Relationship : SchemaType, IRelationship { private RelationshipKind _relationshipKind; RelationshipEndCollection _ends; private List_constraints; /// /// Construct a Relationship object /// /// the parent /// the kind of relationship public Relationship(Schema parent, RelationshipKind kind) : base(parent) { RelationshipKind = kind; } ////// List of Ends defined for this Association /// public IListEnds { get { if ( _ends == null ) _ends = new RelationshipEndCollection(); return _ends; } } /// /// Returns the list of constraints on this relation /// public IListConstraints { get { if (_constraints == null) { _constraints = new List (); } return _constraints; } } public bool TryGetEnd( string roleName, out IRelationshipEnd end ) { return _ends.TryGetEnd( roleName, out end ); } /// /// Is this an Association /// public RelationshipKind RelationshipKind { get { return _relationshipKind; } private set { _relationshipKind = value; } } ////// do whole element validation /// ///internal override void Validate() { base.Validate(); bool foundOperations = false; foreach ( RelationshipEnd end in Ends ) { end.Validate(); if ( RelationshipKind == RelationshipKind.Association ) { if ( end.Operations.Count > 0 ) { if ( foundOperations ) end.AddError( ErrorCode.InvalidOperation, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.InvalidOperationMultipleEndsInAssociation); foundOperations = true; } } } if (Constraints.Count == 0 && this.Schema.DataModel == SchemaDataModelOption.ProviderDataModel) { AddError(ErrorCode.MissingConstraintOnRelationshipType, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.MissingConstraintOnRelationshipType(FQName)); } else { foreach (ReferentialConstraint constraint in Constraints) { constraint.Validate(); } } } /// /// do whole element resolution /// internal override void ResolveTopLevelNames() { base.ResolveTopLevelNames(); foreach ( RelationshipEnd end in Ends ) end.ResolveTopLevelNames(); foreach (ReferentialConstraint referentialConstraint in Constraints) { referentialConstraint.ResolveTopLevelNames(); } } protected override bool HandleElement(XmlReader reader) { if (base.HandleElement(reader)) { return true; } else if (CanHandleElement(reader, XmlConstants.End)) { HandleEndElement(reader); return true; } else if (CanHandleElement(reader, XmlConstants.ReferentialConstraint)) { HandleConstraintElement(reader); return true; } return false; } ////// handle the End child element /// /// XmlReader positioned at the end element private void HandleEndElement(XmlReader reader) { Debug.Assert(reader != null); RelationshipEnd end = new RelationshipEnd(this); end.Parse(reader); if (Ends.Count == 2) { AddError( ErrorCode.InvalidAssociation, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.TooManyAssociationEnds(FQName ) ); return; } Ends.Add(end); } ////// handle the constraint element /// /// XmlReader positioned at the constraint element private void HandleConstraintElement(XmlReader reader) { Debug.Assert(reader != null); ReferentialConstraint constraint = new ReferentialConstraint(this); constraint.Parse(reader); this.Constraints.Add(constraint); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Data.Objects.DataClasses; using System.Collections.Generic; using System.Diagnostics; using System.Xml; using System.Data; using System.Data.Metadata.Edm; namespace System.Data.EntityModel.SchemaObjectModel { ////// Represents an Association element /// internal sealed class Relationship : SchemaType, IRelationship { private RelationshipKind _relationshipKind; RelationshipEndCollection _ends; private List_constraints; /// /// Construct a Relationship object /// /// the parent /// the kind of relationship public Relationship(Schema parent, RelationshipKind kind) : base(parent) { RelationshipKind = kind; } ////// List of Ends defined for this Association /// public IListEnds { get { if ( _ends == null ) _ends = new RelationshipEndCollection(); return _ends; } } /// /// Returns the list of constraints on this relation /// public IListConstraints { get { if (_constraints == null) { _constraints = new List (); } return _constraints; } } public bool TryGetEnd( string roleName, out IRelationshipEnd end ) { return _ends.TryGetEnd( roleName, out end ); } /// /// Is this an Association /// public RelationshipKind RelationshipKind { get { return _relationshipKind; } private set { _relationshipKind = value; } } ////// do whole element validation /// ///internal override void Validate() { base.Validate(); bool foundOperations = false; foreach ( RelationshipEnd end in Ends ) { end.Validate(); if ( RelationshipKind == RelationshipKind.Association ) { if ( end.Operations.Count > 0 ) { if ( foundOperations ) end.AddError( ErrorCode.InvalidOperation, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.InvalidOperationMultipleEndsInAssociation); foundOperations = true; } } } if (Constraints.Count == 0 && this.Schema.DataModel == SchemaDataModelOption.ProviderDataModel) { AddError(ErrorCode.MissingConstraintOnRelationshipType, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.MissingConstraintOnRelationshipType(FQName)); } else { foreach (ReferentialConstraint constraint in Constraints) { constraint.Validate(); } } } /// /// do whole element resolution /// internal override void ResolveTopLevelNames() { base.ResolveTopLevelNames(); foreach ( RelationshipEnd end in Ends ) end.ResolveTopLevelNames(); foreach (ReferentialConstraint referentialConstraint in Constraints) { referentialConstraint.ResolveTopLevelNames(); } } protected override bool HandleElement(XmlReader reader) { if (base.HandleElement(reader)) { return true; } else if (CanHandleElement(reader, XmlConstants.End)) { HandleEndElement(reader); return true; } else if (CanHandleElement(reader, XmlConstants.ReferentialConstraint)) { HandleConstraintElement(reader); return true; } return false; } ////// handle the End child element /// /// XmlReader positioned at the end element private void HandleEndElement(XmlReader reader) { Debug.Assert(reader != null); RelationshipEnd end = new RelationshipEnd(this); end.Parse(reader); if (Ends.Count == 2) { AddError( ErrorCode.InvalidAssociation, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.TooManyAssociationEnds(FQName ) ); return; } Ends.Add(end); } ////// handle the constraint element /// /// XmlReader positioned at the constraint element private void HandleConstraintElement(XmlReader reader) { Debug.Assert(reader != null); ReferentialConstraint constraint = new ReferentialConstraint(this); constraint.Parse(reader); this.Constraints.Add(constraint); } } } // 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
- ExtensibleClassFactory.cs
- ScrollData.cs
- AdjustableArrowCap.cs
- PhysicalFontFamily.cs
- DataControlPagerLinkButton.cs
- GridViewRowCollection.cs
- LayoutInformation.cs
- DataBoundControlParameterTarget.cs
- Item.cs
- WindowsScroll.cs
- MainMenu.cs
- CodeConstructor.cs
- XmlSchemaElement.cs
- SqlDataReader.cs
- autovalidator.cs
- OleDbPropertySetGuid.cs
- ISFClipboardData.cs
- FlatButtonAppearance.cs
- DiagnosticTraceSchemas.cs
- InheritedPropertyChangedEventArgs.cs
- TextServicesCompartmentEventSink.cs
- DateTimeUtil.cs
- TextElementEditingBehaviorAttribute.cs
- WorkflowView.cs
- WebAdminConfigurationHelper.cs
- AccessorTable.cs
- Attributes.cs
- MatrixCamera.cs
- FormsAuthentication.cs
- TreeViewDataItemAutomationPeer.cs
- DataBoundControlHelper.cs
- TextEffectResolver.cs
- ProxyAttribute.cs
- SerialStream.cs
- IndexedGlyphRun.cs
- Stacktrace.cs
- XmlSchemaException.cs
- SettingsPropertyValueCollection.cs
- SpotLight.cs
- serverconfig.cs
- ApplicationInfo.cs
- EventArgs.cs
- ResourcePropertyMemberCodeDomSerializer.cs
- AnnotationComponentChooser.cs
- ArrangedElement.cs
- MemberDomainMap.cs
- LinqDataSourceHelper.cs
- XamlContextStack.cs
- Thumb.cs
- KnownTypesHelper.cs
- TypeElementCollection.cs
- WindowsListViewGroup.cs
- BidPrivateBase.cs
- RectConverter.cs
- CookieProtection.cs
- DataSourceControl.cs
- XmlFormatExtensionPrefixAttribute.cs
- StrokeNodeData.cs
- ParagraphResult.cs
- HashSetDebugView.cs
- WebConfigurationFileMap.cs
- OwnerDrawPropertyBag.cs
- IntSecurity.cs
- XmlNodeList.cs
- PrivilegeNotHeldException.cs
- Pointer.cs
- DelegatingConfigHost.cs
- Avt.cs
- WindowsListViewItemStartMenu.cs
- Cursors.cs
- Rule.cs
- WebServicesDescriptionAttribute.cs
- SymmetricKeyWrap.cs
- Int64AnimationUsingKeyFrames.cs
- DiscoveryClientDuplexChannel.cs
- EnumType.cs
- TrackingMemoryStreamFactory.cs
- fixedPageContentExtractor.cs
- SmiConnection.cs
- XmlAnyElementAttribute.cs
- MessageTraceRecord.cs
- AttachedPropertyBrowsableAttribute.cs
- Filter.cs
- MLangCodePageEncoding.cs
- PageThemeCodeDomTreeGenerator.cs
- GridViewCancelEditEventArgs.cs
- TextEditorMouse.cs
- DataReceivedEventArgs.cs
- WinFormsSpinner.cs
- GeometryHitTestResult.cs
- FormsAuthenticationUserCollection.cs
- WindowsListViewItemCheckBox.cs
- complextypematerializer.cs
- LazyTextWriterCreator.cs
- BypassElementCollection.cs
- WebScriptEndpoint.cs
- BatchServiceHost.cs
- TypeGeneratedEventArgs.cs
- HierarchicalDataBoundControl.cs
- WebBrowserContainer.cs