Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Data / System / Data / Common / DBSchemaTable.cs / 1305376 / DBSchemaTable.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data.Common { using System; using System.Data; using System.Data.ProviderBase; using System.Diagnostics; sealed internal class DbSchemaTable { private enum ColumnEnum { ColumnName, ColumnOrdinal, ColumnSize, BaseServerName, BaseCatalogName, BaseColumnName, BaseSchemaName, BaseTableName, IsAutoIncrement, IsUnique, IsKey, IsRowVersion, DataType, ProviderSpecificDataType, AllowDBNull, ProviderType, IsExpression, IsHidden, IsLong, IsReadOnly, SchemaMappingUnsortedIndex, } static readonly private string[] DBCOLUMN_NAME = new string[] { SchemaTableColumn.ColumnName, SchemaTableColumn.ColumnOrdinal, SchemaTableColumn.ColumnSize, SchemaTableOptionalColumn.BaseServerName, SchemaTableOptionalColumn.BaseCatalogName, SchemaTableColumn.BaseColumnName, SchemaTableColumn.BaseSchemaName, SchemaTableColumn.BaseTableName, SchemaTableOptionalColumn.IsAutoIncrement, SchemaTableColumn.IsUnique, SchemaTableColumn.IsKey, SchemaTableOptionalColumn.IsRowVersion, SchemaTableColumn.DataType, SchemaTableOptionalColumn.ProviderSpecificDataType, SchemaTableColumn.AllowDBNull, SchemaTableColumn.ProviderType, SchemaTableColumn.IsExpression, SchemaTableOptionalColumn.IsHidden, SchemaTableColumn.IsLong, SchemaTableOptionalColumn.IsReadOnly, DbSchemaRow.SchemaMappingUnsortedIndex, }; internal DataTable dataTable; private DataColumnCollection columns; private DataColumn[] columnCache = new DataColumn[DBCOLUMN_NAME.Length]; private bool _returnProviderSpecificTypes; internal DbSchemaTable(DataTable dataTable, bool returnProviderSpecificTypes) { this.dataTable = dataTable; this.columns = dataTable.Columns; _returnProviderSpecificTypes = returnProviderSpecificTypes; } internal DataColumn ColumnName { get { return CachedDataColumn(ColumnEnum.ColumnName);}} internal DataColumn Size { get { return CachedDataColumn(ColumnEnum.ColumnSize);}} internal DataColumn BaseServerName { get { return CachedDataColumn(ColumnEnum.BaseServerName);}} internal DataColumn BaseColumnName { get { return CachedDataColumn(ColumnEnum.BaseColumnName);}} internal DataColumn BaseTableName { get { return CachedDataColumn(ColumnEnum.BaseTableName);}} internal DataColumn BaseCatalogName { get { return CachedDataColumn(ColumnEnum.BaseCatalogName);}} internal DataColumn BaseSchemaName { get { return CachedDataColumn(ColumnEnum.BaseSchemaName);}} internal DataColumn IsAutoIncrement { get { return CachedDataColumn(ColumnEnum.IsAutoIncrement);}} internal DataColumn IsUnique { get { return CachedDataColumn(ColumnEnum.IsUnique);}} internal DataColumn IsKey { get { return CachedDataColumn(ColumnEnum.IsKey);}} internal DataColumn IsRowVersion { get { return CachedDataColumn(ColumnEnum.IsRowVersion);}} internal DataColumn AllowDBNull { get { return CachedDataColumn(ColumnEnum.AllowDBNull);}} internal DataColumn IsExpression { get { return CachedDataColumn(ColumnEnum.IsExpression);}} internal DataColumn IsHidden { get { return CachedDataColumn(ColumnEnum.IsHidden);}} internal DataColumn IsLong { get { return CachedDataColumn(ColumnEnum.IsLong);}} internal DataColumn IsReadOnly { get { return CachedDataColumn(ColumnEnum.IsReadOnly);}} internal DataColumn UnsortedIndex { get { return CachedDataColumn(ColumnEnum.SchemaMappingUnsortedIndex);}} internal DataColumn DataType { get { if (_returnProviderSpecificTypes) { return CachedDataColumn(ColumnEnum.ProviderSpecificDataType, ColumnEnum.DataType); } return CachedDataColumn(ColumnEnum.DataType); } } private DataColumn CachedDataColumn(ColumnEnum column) { return CachedDataColumn(column, column); } private DataColumn CachedDataColumn(ColumnEnum column, ColumnEnum column2) { DataColumn dataColumn = columnCache[(int) column]; if (null == dataColumn) { int index = columns.IndexOf(DBCOLUMN_NAME[(int) column]); if ((-1 == index) && (column != column2)) { index = columns.IndexOf(DBCOLUMN_NAME[(int) column2]); } if (-1 != index) { dataColumn = columns[index]; columnCache[(int) column] = dataColumn; } } return dataColumn; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TextMetrics.cs
- ImportCatalogPart.cs
- VersionedStream.cs
- TextEditorSpelling.cs
- EnumerationRangeValidationUtil.cs
- QueryResponse.cs
- ResourcesChangeInfo.cs
- Image.cs
- X509Certificate.cs
- arclist.cs
- ReflectionUtil.cs
- DataColumnChangeEvent.cs
- UnsafeCollabNativeMethods.cs
- SecurityTokenValidationException.cs
- Math.cs
- HttpPostClientProtocol.cs
- CLSCompliantAttribute.cs
- URL.cs
- Container.cs
- GetWinFXPath.cs
- CollectionChangedEventManager.cs
- TemplateKey.cs
- EnterpriseServicesHelper.cs
- RSAOAEPKeyExchangeFormatter.cs
- WebBrowserPermission.cs
- DataSet.cs
- PointValueSerializer.cs
- ErrorBehavior.cs
- XmlAttributeProperties.cs
- XPathNodeHelper.cs
- DefaultValueAttribute.cs
- RemotingHelper.cs
- HttpCapabilitiesEvaluator.cs
- SystemPens.cs
- JapaneseLunisolarCalendar.cs
- DesignTimeTemplateParser.cs
- XMLSyntaxException.cs
- SemaphoreSlim.cs
- Span.cs
- EmptyWithCancelationCheckWorkItem.cs
- ResourceContainer.cs
- InheritanceAttribute.cs
- DeclaredTypeElement.cs
- ListBoxItem.cs
- XAMLParseException.cs
- DSASignatureFormatter.cs
- UriTemplateVariableQueryValue.cs
- XmlName.cs
- TableLayoutSettings.cs
- SessionState.cs
- SmtpCommands.cs
- SpeakProgressEventArgs.cs
- ClosableStream.cs
- ScrollPattern.cs
- ModelTypeConverter.cs
- SQLResource.cs
- RuntimeHelpers.cs
- ColorConverter.cs
- ConditionCollection.cs
- BaseValidator.cs
- HtmlGenericControl.cs
- Vector3DAnimationBase.cs
- ColorInterpolationModeValidation.cs
- CheckBoxList.cs
- ItemList.cs
- Hash.cs
- DocumentXPathNavigator.cs
- RowUpdatingEventArgs.cs
- GraphicsContext.cs
- FacetChecker.cs
- TransformGroup.cs
- XmlSchemaGroup.cs
- ElementUtil.cs
- TextTreeText.cs
- DependencyPropertyAttribute.cs
- AdPostCacheSubstitution.cs
- Label.cs
- ExternalFile.cs
- AssertValidation.cs
- DataGridRelationshipRow.cs
- TimeSpanValidator.cs
- ProxyElement.cs
- DependentList.cs
- NotSupportedException.cs
- DataGridViewLayoutData.cs
- XmlSiteMapProvider.cs
- Msec.cs
- GroupPartitionExpr.cs
- DotNetATv1WindowsLogEntryDeserializer.cs
- ObfuscationAttribute.cs
- XsdValidatingReader.cs
- IpcPort.cs
- CodePrimitiveExpression.cs
- smtppermission.cs
- Point.cs
- AutomationIdentifier.cs
- ProtocolsConfiguration.cs
- SelectionItemPattern.cs
- ScrollableControlDesigner.cs
- NotifyParentPropertyAttribute.cs