Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Data / System / Data / DataKey.cs / 1 / DataKey.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
// [....]
// [....]
//-----------------------------------------------------------------------------
namespace System.Data {
using System;
using System.Diagnostics;
using System.ComponentModel;
internal struct DataKey {
internal const Int32 COLUMN = unchecked((int)0x0000FFFF);
internal const Int32 DESCENDING = unchecked((int)0x80000000);
private const int maxColumns = 32;
private readonly DataColumn[] columns;
///
/// [To be supplied.]
///
internal DataKey(DataColumn[] columns, bool copyColumns) {
if (columns == null)
throw ExceptionBuilder.ArgumentNull("columns");
if (columns.Length == 0)
throw ExceptionBuilder.KeyNoColumns();
if (columns.Length > maxColumns)
throw ExceptionBuilder.KeyTooManyColumns(maxColumns);
for (int i = 0; i < columns.Length; i++) {
if (columns[i] == null)
throw ExceptionBuilder.ArgumentNull("column");
}
for (int i = 0; i < columns.Length; i++) {
for (int j = 0; j < i; j++) {
if (columns[i] == columns[j]) {
throw ExceptionBuilder.KeyDuplicateColumns(columns[i].ColumnName);
}
}
}
if (copyColumns) {
// Need to make a copy of all columns
this.columns = new DataColumn [columns.Length];
for (int i = 0; i < columns.Length; i++)
this.columns[i] = columns[i];
}
else {
// take ownership of the array passed in
this.columns = columns;
}
CheckState();
}
internal DataColumn[] ColumnsReference {
get {
return columns;
}
}
internal bool HasValue {
get {
return (null != columns);
}
}
internal DataTable Table {
get {
return columns[0].Table;
}
}
internal void CheckState() {
DataTable table = columns[0].Table;
if (table == null) {
throw ExceptionBuilder.ColumnNotInAnyTable();
}
for (int i = 1; i < columns.Length; i++) {
if (columns[i].Table == null) {
throw ExceptionBuilder.ColumnNotInAnyTable();
}
if (columns[i].Table != table) {
throw ExceptionBuilder.KeyTableMismatch();
}
}
}
internal bool ColumnsEqual(DataKey key) {
//check to see if this.columns && key2's columns are equal regardless of order
DataColumn[] column1=columns;
DataColumn[] column2=((DataKey)key).columns;
if (column1 == column2) {
return true;
} else if (column1 == null || column2 == null) {
return false;
} else if (column1.Length != column2.Length) {
return false;
} else {
int i, j;
for (i=0; i
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XPathSingletonIterator.cs
- XPathScanner.cs
- SoapExtensionTypeElementCollection.cs
- TimersDescriptionAttribute.cs
- FileSystemEventArgs.cs
- StorageAssociationSetMapping.cs
- ArraySortHelper.cs
- OleDbException.cs
- Variable.cs
- SplitterPanel.cs
- GenericUriParser.cs
- AsmxEndpointPickerExtension.cs
- DragCompletedEventArgs.cs
- PerfCounters.cs
- ToggleProviderWrapper.cs
- IdentifierCollection.cs
- GetPageCompletedEventArgs.cs
- ToolboxItemFilterAttribute.cs
- XPathNodeIterator.cs
- DeferredTextReference.cs
- TraceUtility.cs
- Grid.cs
- RequestNavigateEventArgs.cs
- Range.cs
- DefaultBinder.cs
- BaseTemplateParser.cs
- NonBatchDirectoryCompiler.cs
- TextBreakpoint.cs
- DeferrableContent.cs
- Nullable.cs
- ChtmlCalendarAdapter.cs
- StateManagedCollection.cs
- UpdateExpressionVisitor.cs
- StorageEntityTypeMapping.cs
- InheritanceContextChangedEventManager.cs
- ProviderException.cs
- NodeInfo.cs
- TcpProcessProtocolHandler.cs
- GenerateScriptTypeAttribute.cs
- loginstatus.cs
- DocumentOutline.cs
- SmtpCommands.cs
- WindowClosedEventArgs.cs
- KeyProperty.cs
- Point4DConverter.cs
- InputScopeNameConverter.cs
- DataGridLinkButton.cs
- XmlSchemaImporter.cs
- ResourceReader.cs
- SoapConverter.cs
- CodeStatement.cs
- SizeLimitedCache.cs
- PassportAuthentication.cs
- XmlAtomicValue.cs
- ExpressionVisitor.cs
- TraceHandlerErrorFormatter.cs
- SerialPort.cs
- RowUpdatedEventArgs.cs
- GenericEnumConverter.cs
- TransformProviderWrapper.cs
- HtmlEncodedRawTextWriter.cs
- DbExpressionBuilder.cs
- CoreSwitches.cs
- Utility.cs
- SymmetricKeyWrap.cs
- WebPartExportVerb.cs
- __Filters.cs
- CompiledScopeCriteria.cs
- QueryCursorEventArgs.cs
- SqlCachedBuffer.cs
- HtmlInputCheckBox.cs
- DataBindingCollection.cs
- LocatorBase.cs
- ClientTarget.cs
- SwitchElementsCollection.cs
- PropertyPushdownHelper.cs
- Partitioner.cs
- CacheModeConverter.cs
- CommandDevice.cs
- XmlSchemaSimpleContentExtension.cs
- MulticastOption.cs
- DataSourceCollectionBase.cs
- MatrixAnimationBase.cs
- SerialPinChanges.cs
- WmlValidationSummaryAdapter.cs
- FrameworkTextComposition.cs
- GetKeyedHashRequest.cs
- DBPropSet.cs
- TypedTableBase.cs
- WindowProviderWrapper.cs
- Ops.cs
- BitmapCodecInfoInternal.cs
- SpoolingTask.cs
- CharAnimationBase.cs
- HierarchicalDataSourceControl.cs
- DeviceContexts.cs
- KeyToListMap.cs
- ResourceProperty.cs
- xsdvalidator.cs
- KeySpline.cs