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
- XLinq.cs
- KeyboardEventArgs.cs
- ChangePasswordAutoFormat.cs
- EmptyStringExpandableObjectConverter.cs
- ImportFileRequest.cs
- TransportConfigurationTypeElementCollection.cs
- PathSegmentCollection.cs
- PerformanceCounterPermissionEntryCollection.cs
- XmlAttributeCache.cs
- RMEnrollmentPage3.cs
- SecurityDescriptor.cs
- ConditionalExpression.cs
- CheckableControlBaseAdapter.cs
- RuntimeEnvironment.cs
- CacheOutputQuery.cs
- CancellationToken.cs
- TrackingMemoryStreamFactory.cs
- ColumnMapTranslator.cs
- HttpVersion.cs
- PackagePart.cs
- TextTrailingWordEllipsis.cs
- SupportingTokenParameters.cs
- DataContractFormatAttribute.cs
- UnknownExceptionActionHelper.cs
- PasswordPropertyTextAttribute.cs
- SQLGuid.cs
- DataGridCheckBoxColumn.cs
- ThemeConfigurationDialog.cs
- TemplateControlCodeDomTreeGenerator.cs
- RecordManager.cs
- RowToFieldTransformer.cs
- SafeProcessHandle.cs
- DescendantQuery.cs
- DialogBaseForm.cs
- XmlSchemas.cs
- HealthMonitoringSection.cs
- FilterUserControlBase.cs
- PropertyValueUIItem.cs
- NegatedConstant.cs
- CodeExporter.cs
- QueueProcessor.cs
- HandleRef.cs
- SelectionRange.cs
- XPathMultyIterator.cs
- AsyncCallback.cs
- DataGridViewCellStyle.cs
- DrawingCollection.cs
- InheritanceContextChangedEventManager.cs
- NativeMethods.cs
- TripleDES.cs
- MutexSecurity.cs
- WhitespaceRuleLookup.cs
- HttpPostedFile.cs
- AppAction.cs
- XmlChildEnumerator.cs
- DataServiceOperationContext.cs
- HttpCachePolicy.cs
- PropertyInformation.cs
- ErrorWebPart.cs
- DataGridState.cs
- FontDriver.cs
- _NtlmClient.cs
- MarkupObject.cs
- UserControl.cs
- PublishLicense.cs
- SafeCryptoHandles.cs
- DateTimeValueSerializerContext.cs
- VisualBasicSettingsHandler.cs
- NameValueConfigurationElement.cs
- MenuAdapter.cs
- XhtmlBasicListAdapter.cs
- ScriptControlManager.cs
- indexingfiltermarshaler.cs
- ExpressionEditor.cs
- DetailsViewModeEventArgs.cs
- TypeConverterHelper.cs
- InputProcessorProfilesLoader.cs
- ClientScriptItemCollection.cs
- CursorInteropHelper.cs
- PropertyGridCommands.cs
- EntityUtil.cs
- DoWhile.cs
- InvalidOleVariantTypeException.cs
- QueryExpr.cs
- SingletonChannelAcceptor.cs
- ServiceContractGenerationContext.cs
- SaveFileDialog.cs
- ContainerFilterService.cs
- ResourcePermissionBase.cs
- Properties.cs
- Int64KeyFrameCollection.cs
- ElementHostAutomationPeer.cs
- BaseResourcesBuildProvider.cs
- ReachPageContentCollectionSerializerAsync.cs
- BitmapImage.cs
- XmlSchemaNotation.cs
- LogLogRecord.cs
- NativeMethods.cs
- EventMappingSettings.cs
- DbExpressionVisitor.cs