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 / EntityContainerAssociationSet.cs / 1 / EntityContainerAssociationSet.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.Objects.DataClasses; using System.Data.Metadata.Edm; namespace System.Data.EntityModel.SchemaObjectModel { ////// Represents an AssociationSet element. /// internal sealed class EntityContainerAssociationSet : EntityContainerRelationshipSet { // Note: If you add more fields, please make sure you handle that in the clone method private Dictionary_relationshipEnds = new Dictionary (); private List _rolelessEnds = new List (); /// /// Constructs an EntityContainerAssociationSet /// /// Reference to the schema element. public EntityContainerAssociationSet( EntityContainer parentElement ) : base( parentElement ) { } ////// The ends defined and infered for this AssociationSet /// internal override IEnumerableEnds { get { foreach ( EntityContainerAssociationSetEnd end in _relationshipEnds.Values ) { yield return end; } foreach ( EntityContainerAssociationSetEnd end in _rolelessEnds ) { yield return end; } } } protected override bool HandleAttribute(XmlReader reader) { if (base.HandleAttribute(reader)) { return true; } else if (CanHandleAttribute(reader, XmlConstants.Association)) { HandleRelationshipTypeNameAttribute(reader); return true; } return false; } protected override bool HandleElement(XmlReader reader) { if (base.HandleElement(reader)) { return true; } else if (CanHandleElement(reader, XmlConstants.End)) { HandleEndElement(reader); return true; } return false; } /// /// The method that is called when an End element is encountered. /// /// The XmlReader positioned at the EndElement. private void HandleEndElement( XmlReader reader ) { Debug.Assert( reader != null ); EntityContainerAssociationSetEnd end = new EntityContainerAssociationSetEnd( this ); end.Parse( reader ); if ( end.Role == null ) { // we will resolve the role name later and put it in the // normal _relationshipEnds dictionary _rolelessEnds.Add( end ); return; } if ( HasEnd( end.Role ) ) { end.AddError( ErrorCode.InvalidName, EdmSchemaErrorSeverity.Error, reader, System.Data.Entity.Strings.DuplicateEndName(end.Name ) ); return; } _relationshipEnds.Add( end.Role, end ); } internal override void ResolveTopLevelNames() { base.ResolveTopLevelNames(); // this just got resolved if ( Relationship != null && Relationship.RelationshipKind != RelationshipKind.Association ) { AddError( ErrorCode.BadType, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.AssociationSetInvalidRelationshipKind(FQName ) ); } } internal override void ResolveSecondLevelNames() { base.ResolveSecondLevelNames(); // the base class should have fixed up the role names on my ends foreach (EntityContainerAssociationSetEnd end in _rolelessEnds) { if (end.Role != null) { if (HasEnd(end.Role)) { end.AddError(ErrorCode.InvalidName, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.InferRelationshipEndGivesAlreadyDefinedEnd(end.EntitySet.FQName, Name)); } else { _relationshipEnds.Add(end.Role, end); } } // any that didn't get resolved will already have errors entered } _rolelessEnds.Clear(); } ////// Create and add a EntityContainerEnd from the IRelationshipEnd provided /// /// The relationship end of the end to add. /// The entitySet to associate with the relationship end. protected override void AddEnd( IRelationshipEnd relationshipEnd, EntityContainerEntitySet entitySet ) { Debug.Assert( relationshipEnd != null ); Debug.Assert( !_relationshipEnds.ContainsKey( relationshipEnd.Name ) ); // we expect set to be null sometimes EntityContainerAssociationSetEnd end = new EntityContainerAssociationSetEnd( this ); end.Role = relationshipEnd.Name; end.RelationshipEnd = relationshipEnd; end.EntitySet = entitySet; if ( end.EntitySet != null ) { _relationshipEnds.Add( end.Role, end ); } } protected override bool HasEnd( string role ) { return _relationshipEnds.ContainsKey( role ); } internal override SchemaElement Clone(SchemaElement parentElement) { EntityContainerAssociationSet associationSet = new EntityContainerAssociationSet((EntityContainer)parentElement); associationSet.Name = this.Name; associationSet.Relationship = this.Relationship; foreach (EntityContainerAssociationSetEnd end in this.Ends) { EntityContainerAssociationSetEnd clonedEnd = (EntityContainerAssociationSetEnd)end.Clone(associationSet); associationSet._relationshipEnds.Add(clonedEnd.Role, clonedEnd); } return associationSet; } } } // 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.Objects.DataClasses; using System.Data.Metadata.Edm; namespace System.Data.EntityModel.SchemaObjectModel { ////// Represents an AssociationSet element. /// internal sealed class EntityContainerAssociationSet : EntityContainerRelationshipSet { // Note: If you add more fields, please make sure you handle that in the clone method private Dictionary_relationshipEnds = new Dictionary (); private List _rolelessEnds = new List (); /// /// Constructs an EntityContainerAssociationSet /// /// Reference to the schema element. public EntityContainerAssociationSet( EntityContainer parentElement ) : base( parentElement ) { } ////// The ends defined and infered for this AssociationSet /// internal override IEnumerableEnds { get { foreach ( EntityContainerAssociationSetEnd end in _relationshipEnds.Values ) { yield return end; } foreach ( EntityContainerAssociationSetEnd end in _rolelessEnds ) { yield return end; } } } protected override bool HandleAttribute(XmlReader reader) { if (base.HandleAttribute(reader)) { return true; } else if (CanHandleAttribute(reader, XmlConstants.Association)) { HandleRelationshipTypeNameAttribute(reader); return true; } return false; } protected override bool HandleElement(XmlReader reader) { if (base.HandleElement(reader)) { return true; } else if (CanHandleElement(reader, XmlConstants.End)) { HandleEndElement(reader); return true; } return false; } /// /// The method that is called when an End element is encountered. /// /// The XmlReader positioned at the EndElement. private void HandleEndElement( XmlReader reader ) { Debug.Assert( reader != null ); EntityContainerAssociationSetEnd end = new EntityContainerAssociationSetEnd( this ); end.Parse( reader ); if ( end.Role == null ) { // we will resolve the role name later and put it in the // normal _relationshipEnds dictionary _rolelessEnds.Add( end ); return; } if ( HasEnd( end.Role ) ) { end.AddError( ErrorCode.InvalidName, EdmSchemaErrorSeverity.Error, reader, System.Data.Entity.Strings.DuplicateEndName(end.Name ) ); return; } _relationshipEnds.Add( end.Role, end ); } internal override void ResolveTopLevelNames() { base.ResolveTopLevelNames(); // this just got resolved if ( Relationship != null && Relationship.RelationshipKind != RelationshipKind.Association ) { AddError( ErrorCode.BadType, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.AssociationSetInvalidRelationshipKind(FQName ) ); } } internal override void ResolveSecondLevelNames() { base.ResolveSecondLevelNames(); // the base class should have fixed up the role names on my ends foreach (EntityContainerAssociationSetEnd end in _rolelessEnds) { if (end.Role != null) { if (HasEnd(end.Role)) { end.AddError(ErrorCode.InvalidName, EdmSchemaErrorSeverity.Error, System.Data.Entity.Strings.InferRelationshipEndGivesAlreadyDefinedEnd(end.EntitySet.FQName, Name)); } else { _relationshipEnds.Add(end.Role, end); } } // any that didn't get resolved will already have errors entered } _rolelessEnds.Clear(); } ////// Create and add a EntityContainerEnd from the IRelationshipEnd provided /// /// The relationship end of the end to add. /// The entitySet to associate with the relationship end. protected override void AddEnd( IRelationshipEnd relationshipEnd, EntityContainerEntitySet entitySet ) { Debug.Assert( relationshipEnd != null ); Debug.Assert( !_relationshipEnds.ContainsKey( relationshipEnd.Name ) ); // we expect set to be null sometimes EntityContainerAssociationSetEnd end = new EntityContainerAssociationSetEnd( this ); end.Role = relationshipEnd.Name; end.RelationshipEnd = relationshipEnd; end.EntitySet = entitySet; if ( end.EntitySet != null ) { _relationshipEnds.Add( end.Role, end ); } } protected override bool HasEnd( string role ) { return _relationshipEnds.ContainsKey( role ); } internal override SchemaElement Clone(SchemaElement parentElement) { EntityContainerAssociationSet associationSet = new EntityContainerAssociationSet((EntityContainer)parentElement); associationSet.Name = this.Name; associationSet.Relationship = this.Relationship; foreach (EntityContainerAssociationSetEnd end in this.Ends) { EntityContainerAssociationSetEnd clonedEnd = (EntityContainerAssociationSetEnd)end.Clone(associationSet); associationSet._relationshipEnds.Add(clonedEnd.Role, clonedEnd); } return associationSet; } } } // 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
- InkCanvas.cs
- Geometry3D.cs
- WindowsFormsEditorServiceHelper.cs
- ProxyRpc.cs
- EnvelopedPkcs7.cs
- FormsAuthenticationCredentials.cs
- XXXInfos.cs
- oledbconnectionstring.cs
- PropertyItemInternal.cs
- VirtualDirectoryMappingCollection.cs
- ProjectedSlot.cs
- DefaultBindingPropertyAttribute.cs
- compensatingcollection.cs
- Int64.cs
- XmlValidatingReaderImpl.cs
- XmlSchemaSimpleTypeRestriction.cs
- WebMethodAttribute.cs
- TextDecoration.cs
- EnumerationRangeValidationUtil.cs
- DataGridViewComboBoxCell.cs
- CompositeControl.cs
- ReadOnlyTernaryTree.cs
- XmlSchemaExternal.cs
- X509RecipientCertificateClientElement.cs
- VirtualizingStackPanel.cs
- ImmutableObjectAttribute.cs
- UpdateCommand.cs
- PeerNameResolver.cs
- DefaultEventAttribute.cs
- SystemKeyConverter.cs
- HighlightComponent.cs
- NullRuntimeConfig.cs
- StreamInfo.cs
- BitmapEffectCollection.cs
- DiscreteKeyFrames.cs
- GeometryHitTestParameters.cs
- TimeZone.cs
- LayoutEngine.cs
- DecoderNLS.cs
- RIPEMD160.cs
- WebPartUserCapability.cs
- HitTestParameters.cs
- StringHelper.cs
- FilterQuery.cs
- ComplusTypeValidator.cs
- OdbcDataReader.cs
- tabpagecollectioneditor.cs
- EntityFrameworkVersions.cs
- ControlBindingsConverter.cs
- QuadraticBezierSegment.cs
- ConnectionStringSettings.cs
- SelectorAutomationPeer.cs
- XmlSchemaCollection.cs
- ReturnType.cs
- GridItemPattern.cs
- TargetException.cs
- Parameter.cs
- Latin1Encoding.cs
- PolyBezierSegment.cs
- DataGridViewRowHeaderCell.cs
- PropertyChangedEventArgs.cs
- NullableLongMinMaxAggregationOperator.cs
- DataControlFieldCollection.cs
- TraceContextRecord.cs
- XmlNodeReader.cs
- TextEditorCopyPaste.cs
- TextModifierScope.cs
- DataGridViewCellValueEventArgs.cs
- IntSecurity.cs
- SecurityDocument.cs
- AuthenticationModulesSection.cs
- DictionaryBase.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- SafeProcessHandle.cs
- AutomationFocusChangedEventArgs.cs
- HttpPostedFileWrapper.cs
- EntityViewGenerator.cs
- DataGridViewSelectedColumnCollection.cs
- TreeNodeConverter.cs
- XmlHelper.cs
- ManipulationStartingEventArgs.cs
- XmlBoundElement.cs
- EntityDataSourceViewSchema.cs
- NewArrayExpression.cs
- CellParaClient.cs
- StringExpressionSet.cs
- StringAnimationBase.cs
- IndicShape.cs
- VScrollBar.cs
- DebuggerAttributes.cs
- KnownAssemblyEntry.cs
- ConfigXmlCDataSection.cs
- arabicshape.cs
- HostingEnvironmentException.cs
- ErrorRuntimeConfig.cs
- LoopExpression.cs
- SvcMapFile.cs
- SemaphoreFullException.cs
- FlatButtonAppearance.cs
- XmlnsDictionary.cs