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
- ProcessProtocolHandler.cs
- Helpers.cs
- TemplateField.cs
- EnlistmentTraceIdentifier.cs
- ImageKeyConverter.cs
- OpenTypeLayout.cs
- AmbientEnvironment.cs
- CodeGeneratorOptions.cs
- M3DUtil.cs
- BulletedListDesigner.cs
- KeysConverter.cs
- DataControlFieldHeaderCell.cs
- UTF7Encoding.cs
- WindowsSpinner.cs
- Msmq4SubqueuePoisonHandler.cs
- CannotUnloadAppDomainException.cs
- DeclarativeCatalogPartDesigner.cs
- RouteParameter.cs
- AbsoluteQuery.cs
- NotifyIcon.cs
- StreamUpdate.cs
- XmlEncoding.cs
- ClientData.cs
- Repeater.cs
- GridViewColumnCollection.cs
- HitTestResult.cs
- PasswordBoxAutomationPeer.cs
- FormViewDeleteEventArgs.cs
- Attachment.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- Tuple.cs
- MultiByteCodec.cs
- Int64Storage.cs
- Rfc2898DeriveBytes.cs
- PersistChildrenAttribute.cs
- PrintDocument.cs
- sortedlist.cs
- _SafeNetHandles.cs
- AuthStoreRoleProvider.cs
- sqlser.cs
- ConfigXmlCDataSection.cs
- XmlnsDefinitionAttribute.cs
- BrowserCapabilitiesFactory.cs
- Certificate.cs
- ExpressionNode.cs
- ConnectionOrientedTransportBindingElement.cs
- SchemaLookupTable.cs
- PriorityBindingExpression.cs
- PartialCachingControl.cs
- ListDictionary.cs
- DragEvent.cs
- DesignTimeParseData.cs
- DXD.cs
- PipeSecurity.cs
- ProcessModule.cs
- DbProviderFactory.cs
- TdsParserSessionPool.cs
- WebServiceClientProxyGenerator.cs
- WindowsSpinner.cs
- RecipientInfo.cs
- ResetableIterator.cs
- CollectionViewProxy.cs
- Link.cs
- RtfControls.cs
- ECDsa.cs
- Native.cs
- IconBitmapDecoder.cs
- ProjectionCamera.cs
- DeviceOverridableAttribute.cs
- Normalization.cs
- BrowserCapabilitiesCodeGenerator.cs
- Point3DValueSerializer.cs
- BufferBuilder.cs
- SizeAnimationUsingKeyFrames.cs
- BitmapEncoder.cs
- MSAAWinEventWrap.cs
- SqlCacheDependencyDatabase.cs
- ContainerControl.cs
- ReachUIElementCollectionSerializer.cs
- BitmapSizeOptions.cs
- CompositeDispatchFormatter.cs
- MaterialGroup.cs
- ImageSourceConverter.cs
- IteratorFilter.cs
- ZipIOCentralDirectoryFileHeader.cs
- InputDevice.cs
- RecognizerBase.cs
- SqlDataSourceFilteringEventArgs.cs
- PersonalizationProviderHelper.cs
- ISessionStateStore.cs
- ThicknessAnimation.cs
- RegisteredArrayDeclaration.cs
- RoutedEventConverter.cs
- SQLMembershipProvider.cs
- MultiPartWriter.cs
- AppSettingsReader.cs
- PathStreamGeometryContext.cs
- Stream.cs
- TryExpression.cs
- Int16.cs