Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / System / data / design / DesignRelationCollection.cs / 1 / DesignRelationCollection.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All Rights Reserved. // Information Contained Herein is Proprietary and Confidential. // //----------------------------------------------------------------------------- namespace System.Data.Design{ using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Diagnostics; ////// internal class DesignRelationCollection: DataSourceCollectionBase { private DesignDataSource dataSource; public DesignRelationCollection(DesignDataSource dataSource) : base(dataSource) { this.dataSource = dataSource; } private DataSet DataSet{ get{ if (dataSource != null){ return dataSource.DataSet; } return null; } } protected override Type ItemType { get { return typeof(DesignRelation); } } protected override INameService NameService { get { return DataSetNameService.DefaultInstance; } } internal DesignRelation this[ForeignKeyConstraint constraint] { get { if (constraint == null) { return null; } foreach (DesignRelation relation in this) { if (relation.ForeignKeyConstraint == constraint) { return relation; } } return null; } } internal DesignRelation this[string name] { get { return (DesignRelation) FindObject(name); } } public void Remove( DesignRelation rel ) { List.Remove( rel ); } public int Add( DesignRelation rel ) { return List.Add( rel ); } public bool Contains( DesignRelation rel ) { return List.Contains( rel ); } ////// Note: this function need to call base first /// to ensure the undo model work! /// protected override void OnInsert( int index, object value ) { ValidateType( value ); DesignRelation designRelation = (DesignRelation)value; if( (this.dataSource != null) && (designRelation.Owner == this.dataSource) ) { Debug.Fail( "Relation already belongs to this DataSource" ); return; // no-op } if( (this.dataSource != null) && (designRelation.Owner != null) ) { throw new InternalException( VSDExceptions.DataSource.RELATION_BELONGS_TO_OTHER_DATA_SOURCE_MSG, VSDExceptions.DataSource.RELATION_BELONGS_TO_OTHER_DATA_SOURCE_CODE ); } if (designRelation.Name == null || designRelation.Name.Length == 0) { designRelation.Name = CreateUniqueName(designRelation); } ValidateName(designRelation); DataSet dataSet = DataSet; if (dataSet != null) { if (designRelation.ForeignKeyConstraint != null) { ForeignKeyConstraint constraint = designRelation.ForeignKeyConstraint; if (constraint.Columns.Length > 0) { DataTable dataTable = constraint.Columns[0].Table; if (dataTable != null && !dataTable.Constraints.Contains(constraint.ConstraintName)) { dataTable.Constraints.Add(constraint); } } } if (designRelation.DataRelation != null && (!dataSet.Relations.Contains(designRelation.DataRelation.RelationName))){ dataSet.Relations.Add(designRelation.DataRelation); } } // we should insert to the collection later than we insert to DataSet // the reason is the DataSet will create a keyConstraint for relation, we want the constraint undo unit to be added before // our relation undo unit... otherwise, the undo/redo will fail, as DataSet will create another constraint for us.. base.OnInsert( index, value ); designRelation.Owner = dataSource; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AlgoModule.cs
- DataServiceBuildProvider.cs
- EntityDesignerDataSourceView.cs
- ApplicationManager.cs
- Attributes.cs
- DispatcherTimer.cs
- Pen.cs
- XmlSchemaSimpleContent.cs
- HttpConfigurationContext.cs
- CodeSubDirectoriesCollection.cs
- SmiMetaData.cs
- SvcMapFileSerializer.cs
- XmlObjectSerializerWriteContextComplex.cs
- HttpStaticObjectsCollectionBase.cs
- JsonMessageEncoderFactory.cs
- ActiveXContainer.cs
- BoundField.cs
- EvidenceBase.cs
- RemotingConfiguration.cs
- CodeExpressionCollection.cs
- UnsupportedPolicyOptionsException.cs
- WebBrowserDocumentCompletedEventHandler.cs
- XmlName.cs
- ControlHelper.cs
- WebColorConverter.cs
- EpmCustomContentSerializer.cs
- PropertyInformationCollection.cs
- IssuedSecurityTokenParameters.cs
- InstalledFontCollection.cs
- securestring.cs
- ObfuscationAttribute.cs
- DataControlField.cs
- FormsAuthenticationEventArgs.cs
- ReadOnlyDataSourceView.cs
- ByteAnimationBase.cs
- ChameleonKey.cs
- EntityDataSourceUtil.cs
- ObjectStateFormatter.cs
- ListItemCollection.cs
- DbMetaDataColumnNames.cs
- VisualTreeHelper.cs
- ExpressionEditorAttribute.cs
- X500Name.cs
- StartUpEventArgs.cs
- ComponentDispatcher.cs
- StreamReader.cs
- WebControlAdapter.cs
- ControlPaint.cs
- FixedStringLookup.cs
- wgx_render.cs
- RegisteredScript.cs
- GridViewCancelEditEventArgs.cs
- InternalDispatchObject.cs
- SqlCaseSimplifier.cs
- EnumerableCollectionView.cs
- FormViewUpdateEventArgs.cs
- FrameworkElementFactoryMarkupObject.cs
- SqlRemoveConstantOrderBy.cs
- WebPartTransformerCollection.cs
- PathSegment.cs
- GeneralTransform.cs
- OneOfConst.cs
- StringBuilder.cs
- WithStatement.cs
- PageAction.cs
- DependentList.cs
- NetMsmqBinding.cs
- ComponentSerializationService.cs
- ItemContainerGenerator.cs
- DataListItem.cs
- NavigationCommands.cs
- GrammarBuilder.cs
- XmlBoundElement.cs
- ThreadExceptionDialog.cs
- BuildManager.cs
- RemoveStoryboard.cs
- ButtonFieldBase.cs
- WorkflowEnvironment.cs
- EntityDataSourceEntityTypeFilterItem.cs
- DocumentSchemaValidator.cs
- OdbcConnectionHandle.cs
- SqlDataRecord.cs
- propertytag.cs
- DataServiceHost.cs
- CodeTypeReferenceSerializer.cs
- PropertyEmitterBase.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- UIElementAutomationPeer.cs
- WebPartCancelEventArgs.cs
- DescendantBaseQuery.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- ImageSourceConverter.cs
- ParserHooks.cs
- AddInIpcChannel.cs
- Trace.cs
- PanelContainerDesigner.cs
- DetailsViewCommandEventArgs.cs
- RevocationPoint.cs
- FactoryMaker.cs
- formatter.cs