Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / EntityModel / SchemaObjectModel / Relationship.cs / 1 / 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
- LogicalExpr.cs
- BamlLocalizer.cs
- ProgressBarRenderer.cs
- AuthorizationRuleCollection.cs
- DataGridViewRowStateChangedEventArgs.cs
- QilPatternFactory.cs
- TagMapCollection.cs
- DataGridViewColumn.cs
- ConversionContext.cs
- KeyValuePairs.cs
- LocatorBase.cs
- DataRow.cs
- XmlNodeReader.cs
- DebuggerAttributes.cs
- MaskInputRejectedEventArgs.cs
- SettingsBase.cs
- FormsIdentity.cs
- EqualityComparer.cs
- StaticTextPointer.cs
- MessageDecoder.cs
- ImageMap.cs
- VScrollProperties.cs
- UInt64Storage.cs
- SqlCharStream.cs
- RegexCaptureCollection.cs
- ClientFormsAuthenticationCredentials.cs
- XmlRootAttribute.cs
- SQLInt64.cs
- ColorMap.cs
- Relationship.cs
- PerformanceCounters.cs
- PrtCap_Base.cs
- QilXmlReader.cs
- StringValidator.cs
- LinqDataSourceView.cs
- SqlFileStream.cs
- VisualProxy.cs
- CodeArrayIndexerExpression.cs
- _NativeSSPI.cs
- PageStatePersister.cs
- HttpResponseInternalWrapper.cs
- SoapMessage.cs
- TextRunTypographyProperties.cs
- WsdlImporterElementCollection.cs
- ManagementNamedValueCollection.cs
- mediaclock.cs
- Label.cs
- MachineKeyConverter.cs
- ContainerParagraph.cs
- EntityDataSourceDataSelection.cs
- FrameworkElementAutomationPeer.cs
- WebBrowserSiteBase.cs
- IIS7WorkerRequest.cs
- EntityDataSourceDesignerHelper.cs
- InvokeProviderWrapper.cs
- SystemFonts.cs
- Point3DCollection.cs
- DragEventArgs.cs
- Vector3DCollectionConverter.cs
- LoginNameDesigner.cs
- ServerValidateEventArgs.cs
- StylusPoint.cs
- RawStylusInput.cs
- WebPartZone.cs
- WindowsRichEditRange.cs
- ProcessHostFactoryHelper.cs
- BufferedGraphics.cs
- MarginCollapsingState.cs
- ConfigurationElement.cs
- DiagnosticTrace.cs
- TitleStyle.cs
- TabControlAutomationPeer.cs
- PropertyPanel.cs
- WindowsSlider.cs
- SpoolingTaskBase.cs
- ProfileBuildProvider.cs
- Configuration.cs
- InvalidProgramException.cs
- User.cs
- DriveNotFoundException.cs
- CodeExpressionCollection.cs
- HitTestDrawingContextWalker.cs
- TreeNodeStyleCollectionEditor.cs
- FixedTextSelectionProcessor.cs
- TemplateControlBuildProvider.cs
- SplineKeyFrames.cs
- EdmError.cs
- XamlRtfConverter.cs
- XslTransform.cs
- DataServiceRequest.cs
- UnknownBitmapDecoder.cs
- XsdBuilder.cs
- ConstNode.cs
- GZipStream.cs
- RequestCacheManager.cs
- LinearQuaternionKeyFrame.cs
- AssemblyInfo.cs
- Point3D.cs
- PageStatePersister.cs
- EmptyStringExpandableObjectConverter.cs