Code:
/ DotNET / DotNET / 8.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
- FaultDesigner.cs
- SerializableAttribute.cs
- HttpFileCollection.cs
- FigureHelper.cs
- ContainsRowNumberChecker.cs
- XmlCountingReader.cs
- GridViewColumn.cs
- NamespaceInfo.cs
- CharacterHit.cs
- Point4DValueSerializer.cs
- Clock.cs
- StretchValidation.cs
- CapabilitiesPattern.cs
- CustomValidator.cs
- Accessible.cs
- WebHttpElement.cs
- Memoizer.cs
- IDictionary.cs
- WebPartMovingEventArgs.cs
- ProcessHostFactoryHelper.cs
- ReadOnlyAttribute.cs
- TextHidden.cs
- Geometry3D.cs
- FocusTracker.cs
- RelationshipNavigation.cs
- TableLayoutColumnStyleCollection.cs
- MultiPartWriter.cs
- XmlSiteMapProvider.cs
- SharedPersonalizationStateInfo.cs
- LateBoundBitmapDecoder.cs
- DataGridViewRowEventArgs.cs
- Closure.cs
- AnimatedTypeHelpers.cs
- TabControlAutomationPeer.cs
- AccessDataSourceView.cs
- StylusCaptureWithinProperty.cs
- X509SubjectKeyIdentifierClause.cs
- AsyncCompletedEventArgs.cs
- SQLBytesStorage.cs
- KeyedCollection.cs
- TemplateControl.cs
- DbConnectionClosed.cs
- HttpListenerContext.cs
- OracleBFile.cs
- Label.cs
- NCryptNative.cs
- Scene3D.cs
- SendMailErrorEventArgs.cs
- PointLightBase.cs
- Misc.cs
- ToolStripDropTargetManager.cs
- PageSetupDialog.cs
- RemotingHelper.cs
- Timer.cs
- UserControlBuildProvider.cs
- PersonalizablePropertyEntry.cs
- XmlAnyElementAttribute.cs
- UserInitiatedNavigationPermission.cs
- ReflectionUtil.cs
- SqlXmlStorage.cs
- SecuritySessionSecurityTokenAuthenticator.cs
- AnnotationMap.cs
- SymbolDocumentInfo.cs
- ClonableStack.cs
- Rect3DConverter.cs
- ProxyGenerationError.cs
- UshortList2.cs
- SettingsBindableAttribute.cs
- StrokeRenderer.cs
- CompoundFileStorageReference.cs
- OracleBinary.cs
- SynchronizingStream.cs
- CommentEmitter.cs
- DataTableReader.cs
- NetworkAddressChange.cs
- CompModSwitches.cs
- SymbolMethod.cs
- ConfigurationManagerHelperFactory.cs
- EmbeddedMailObject.cs
- RepeatButton.cs
- DynamicQueryableWrapper.cs
- AuthenticationModulesSection.cs
- DispatcherTimer.cs
- FrameworkReadOnlyPropertyMetadata.cs
- UserControlParser.cs
- SQLRoleProvider.cs
- FixedSOMPage.cs
- InvalidOleVariantTypeException.cs
- AssemblyInfo.cs
- TakeQueryOptionExpression.cs
- DebuggerAttributes.cs
- SoapIgnoreAttribute.cs
- XmlDataCollection.cs
- SiteMapHierarchicalDataSourceView.cs
- BitmapEffect.cs
- HtmlShim.cs
- ObjectComplexPropertyMapping.cs
- __FastResourceComparer.cs
- ManualWorkflowSchedulerService.cs
- SystemIcmpV6Statistics.cs