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
- ObjectStateManagerMetadata.cs
- _HTTPDateParse.cs
- metrodevice.cs
- ToolStripOverflowButton.cs
- Configuration.cs
- DecimalKeyFrameCollection.cs
- ReferencedType.cs
- ECDiffieHellman.cs
- ReflectTypeDescriptionProvider.cs
- RelatedPropertyManager.cs
- HatchBrush.cs
- PersistenceContextEnlistment.cs
- OutputCacheSettingsSection.cs
- EnumerableRowCollectionExtensions.cs
- RelationshipConverter.cs
- RequiredFieldValidator.cs
- TreeNodeBinding.cs
- XmlImplementation.cs
- HtmlInputText.cs
- OneOfConst.cs
- IpcClientChannel.cs
- HtmlGenericControl.cs
- RecognitionEventArgs.cs
- XmlSchemaElement.cs
- NamespaceEmitter.cs
- DBSchemaRow.cs
- ApplicationInfo.cs
- HttpClientChannel.cs
- RandomNumberGenerator.cs
- HelloMessage11.cs
- CombinedHttpChannel.cs
- GeneratedCodeAttribute.cs
- ToolStripDropDownItem.cs
- ReadOnlyObservableCollection.cs
- XmlEncodedRawTextWriter.cs
- ISessionStateStore.cs
- DataGridTable.cs
- BindingExpressionBase.cs
- DetailsViewPageEventArgs.cs
- SubMenuStyle.cs
- MenuItem.cs
- ManagementQuery.cs
- ProcessStartInfo.cs
- SerialStream.cs
- WebPartAddingEventArgs.cs
- ContentElement.cs
- CqlErrorHelper.cs
- PerformanceCounterPermissionEntry.cs
- CreatingCookieEventArgs.cs
- ClientScriptManager.cs
- PropertyHelper.cs
- PersistenceTypeAttribute.cs
- AuthenticationService.cs
- SafeRegistryHandle.cs
- ConvertersCollection.cs
- TextEditorThreadLocalStore.cs
- BindingExpressionUncommonField.cs
- InkCanvasSelectionAdorner.cs
- httpstaticobjectscollection.cs
- ProxyWebPart.cs
- TableTextElementCollectionInternal.cs
- TimeSpanConverter.cs
- X509ServiceCertificateAuthenticationElement.cs
- cache.cs
- AncestorChangedEventArgs.cs
- FillRuleValidation.cs
- OdbcConnectionStringbuilder.cs
- InkCanvasSelectionAdorner.cs
- _FixedSizeReader.cs
- TempFiles.cs
- HttpModuleCollection.cs
- AsyncPostBackErrorEventArgs.cs
- BinaryMethodMessage.cs
- GiveFeedbackEventArgs.cs
- PathParser.cs
- SoapTransportImporter.cs
- _SslSessionsCache.cs
- EdmConstants.cs
- DataTrigger.cs
- WindowsNonControl.cs
- IResourceProvider.cs
- CollectionTraceRecord.cs
- HttpProfileGroupBase.cs
- CfgSemanticTag.cs
- AttributeQuery.cs
- ButtonPopupAdapter.cs
- LinkUtilities.cs
- AssemblyLoader.cs
- EventManager.cs
- ToolStripOverflow.cs
- Material.cs
- MouseOverProperty.cs
- CompModHelpers.cs
- DataGridCell.cs
- FontUnit.cs
- IndexedSelectQueryOperator.cs
- Style.cs
- XmlQueryContext.cs
- Size.cs
- MarkupCompilePass2.cs