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
- XmlSchemaSubstitutionGroup.cs
- UpdatePanel.cs
- HtmlWindow.cs
- unsafeIndexingFilterStream.cs
- UInt64.cs
- COM2Enum.cs
- RequestCachingSection.cs
- XmlSchemaSimpleTypeUnion.cs
- UrlMappingsSection.cs
- LogSwitch.cs
- StyleCollection.cs
- XmlStreamStore.cs
- AssociatedControlConverter.cs
- SmiRequestExecutor.cs
- storepermission.cs
- TemplateModeChangedEventArgs.cs
- MediaSystem.cs
- XmlQueryOutput.cs
- Stack.cs
- MatrixAnimationUsingPath.cs
- PlaceHolder.cs
- StreamReader.cs
- PolyLineSegmentFigureLogic.cs
- CodeBinaryOperatorExpression.cs
- XNodeValidator.cs
- CodeCatchClause.cs
- HeaderedContentControl.cs
- KeyInfo.cs
- Margins.cs
- ArraySortHelper.cs
- XmlSerializerAssemblyAttribute.cs
- XmlTextEncoder.cs
- ToolStripMenuItem.cs
- TypeGeneratedEventArgs.cs
- Knowncolors.cs
- listviewsubitemcollectioneditor.cs
- SqlDataSource.cs
- DbConnectionPoolCounters.cs
- Timeline.cs
- GACIdentityPermission.cs
- LocatorGroup.cs
- QueryCursorEventArgs.cs
- BevelBitmapEffect.cs
- HighContrastHelper.cs
- InlineUIContainer.cs
- ViewEvent.cs
- PeerNearMe.cs
- DecoratedNameAttribute.cs
- COAUTHINFO.cs
- HeaderedItemsControl.cs
- HttpResponseInternalWrapper.cs
- WindowsFormsHost.cs
- ConnectionStringSettings.cs
- OleAutBinder.cs
- bidPrivateBase.cs
- CompilerGeneratedAttribute.cs
- CheckPair.cs
- OpacityConverter.cs
- SkewTransform.cs
- GraphicsPathIterator.cs
- CancellationHandlerDesigner.cs
- PropertyFilterAttribute.cs
- TranslateTransform3D.cs
- ItemMap.cs
- WindowsRebar.cs
- ObjectTag.cs
- DocumentApplicationJournalEntry.cs
- ListItemsPage.cs
- DataGridViewColumnConverter.cs
- ExpandCollapsePattern.cs
- RegexNode.cs
- TypeReference.cs
- DesignerRegionMouseEventArgs.cs
- DataGridViewColumnConverter.cs
- RenamedEventArgs.cs
- ConfigurationCollectionAttribute.cs
- FilterEventArgs.cs
- smtppermission.cs
- TripleDES.cs
- AutomationPatternInfo.cs
- ModuleBuilderData.cs
- TableLayoutPanelBehavior.cs
- Int16Converter.cs
- TripleDES.cs
- DeviceSpecificChoiceCollection.cs
- PropertyTab.cs
- URIFormatException.cs
- ListViewItem.cs
- ValuePattern.cs
- ConnectionsZoneDesigner.cs
- BitmapSource.cs
- columnmapfactory.cs
- ImageListDesigner.cs
- MatrixAnimationUsingKeyFrames.cs
- NativeCompoundFileAPIs.cs
- Point3DConverter.cs
- DynamicMethod.cs
- FileSystemWatcher.cs
- DataServiceKeyAttribute.cs
- WindowsToolbarItemAsMenuItem.cs