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
- coordinatorfactory.cs
- SqlUserDefinedAggregateAttribute.cs
- XmlSerializerOperationGenerator.cs
- RegexRunner.cs
- CardSpaceException.cs
- AnnotationComponentManager.cs
- PaintValueEventArgs.cs
- SoundPlayer.cs
- DisplayInformation.cs
- DeviceContext.cs
- WebPartDeleteVerb.cs
- BookmarkUndoUnit.cs
- HierarchicalDataSourceIDConverter.cs
- SpeechRecognizer.cs
- PointAnimationUsingKeyFrames.cs
- ConfigurationSchemaErrors.cs
- EntityExpressionVisitor.cs
- FrameSecurityDescriptor.cs
- ValueChangedEventManager.cs
- WebPermission.cs
- Stackframe.cs
- AlphabeticalEnumConverter.cs
- _KerberosClient.cs
- InternalTypeHelper.cs
- XPathDocumentIterator.cs
- TableSectionStyle.cs
- ExpressionConverter.cs
- ClientRolePrincipal.cs
- AuthenticationSection.cs
- ContainerUIElement3D.cs
- PolicyImporterElementCollection.cs
- AnimationClock.cs
- ThreadExceptionEvent.cs
- TranslateTransform3D.cs
- pingexception.cs
- ListBoxAutomationPeer.cs
- DetailsViewCommandEventArgs.cs
- XmlNodeWriter.cs
- XmlUrlResolver.cs
- CheckableControlBaseAdapter.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- EmbossBitmapEffect.cs
- SupportsEventValidationAttribute.cs
- RuntimeWrappedException.cs
- TreeView.cs
- AnimationLayer.cs
- SQLDouble.cs
- Error.cs
- MouseEventArgs.cs
- FileEnumerator.cs
- PassportAuthenticationModule.cs
- HtmlInputSubmit.cs
- AssemblyGen.cs
- XmlDocumentSerializer.cs
- FrameworkTemplate.cs
- TraceSwitch.cs
- BitmapEffectDrawingContent.cs
- TextElementEnumerator.cs
- AdornerPresentationContext.cs
- SerializationIncompleteException.cs
- StringToken.cs
- PersianCalendar.cs
- QilParameter.cs
- GridViewUpdateEventArgs.cs
- PermissionSet.cs
- storagemappingitemcollection.viewdictionary.cs
- WebPartEditorCancelVerb.cs
- AQNBuilder.cs
- SqlDataSourceCustomCommandEditor.cs
- _BufferOffsetSize.cs
- TargetException.cs
- oledbmetadatacolumnnames.cs
- SplitterDesigner.cs
- SqlDeflator.cs
- TreeViewItemAutomationPeer.cs
- RtType.cs
- NetworkInformationPermission.cs
- ExpressionBuilderCollection.cs
- HtmlImage.cs
- GridViewUpdateEventArgs.cs
- InteropBitmapSource.cs
- RadialGradientBrush.cs
- webbrowsersite.cs
- ParseHttpDate.cs
- Marshal.cs
- SafeCoTaskMem.cs
- DataGridCommandEventArgs.cs
- Transform.cs
- Trigger.cs
- Scripts.cs
- ExecutedRoutedEventArgs.cs
- WebPartTracker.cs
- ObjectStateManagerMetadata.cs
- MessageBox.cs
- ReadOnlyHierarchicalDataSourceView.cs
- Pair.cs
- glyphs.cs
- OracleRowUpdatingEventArgs.cs
- SiteMapHierarchicalDataSourceView.cs
- EdmType.cs