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
- IPHostEntry.cs
- ResourceReferenceExpression.cs
- DesignerCategoryAttribute.cs
- RegistrationServices.cs
- EditBehavior.cs
- SqlXml.cs
- Int64.cs
- ProfileModule.cs
- MarkupExtensionReturnTypeAttribute.cs
- ValidatingPropertiesEventArgs.cs
- PathHelper.cs
- TextHintingModeValidation.cs
- EntityViewContainer.cs
- MemberPath.cs
- NativeMethods.cs
- LinkButton.cs
- XamlFrame.cs
- Int32Converter.cs
- UnmanagedMarshal.cs
- QueryAccessibilityHelpEvent.cs
- DataServiceException.cs
- MessageEnumerator.cs
- DesignerVerb.cs
- MsiStyleLogWriter.cs
- DataSourceProvider.cs
- OpenTypeLayoutCache.cs
- NetworkInterface.cs
- ActivationServices.cs
- BufferBuilder.cs
- LayoutEditorPart.cs
- WebEvents.cs
- HMACSHA384.cs
- PersonalizationEntry.cs
- ListViewUpdatedEventArgs.cs
- ListViewItem.cs
- ComEventsHelper.cs
- StickyNoteAnnotations.cs
- Table.cs
- SQLInt64.cs
- ModuleConfigurationInfo.cs
- Point3DValueSerializer.cs
- IdleTimeoutMonitor.cs
- Freezable.cs
- COM2IDispatchConverter.cs
- HttpProfileGroupBase.cs
- SiteMapProvider.cs
- StringToken.cs
- Variant.cs
- HasCopySemanticsAttribute.cs
- LinqDataSourceValidationException.cs
- GuidTagList.cs
- XPathParser.cs
- CollectionExtensions.cs
- MulticastNotSupportedException.cs
- StringDictionaryEditor.cs
- Viewport2DVisual3D.cs
- DataGridViewTextBoxColumn.cs
- AnnotationService.cs
- FormViewAutoFormat.cs
- CommunicationException.cs
- RelativeSource.cs
- StreamHelper.cs
- CroppedBitmap.cs
- HighlightVisual.cs
- ReadOnlyTernaryTree.cs
- PointCollection.cs
- SecurityKeyType.cs
- SingleSelectRootGridEntry.cs
- SizeAnimationUsingKeyFrames.cs
- LessThanOrEqual.cs
- Timer.cs
- SimpleHandlerFactory.cs
- UserInitiatedNavigationPermission.cs
- RangeValidator.cs
- Pair.cs
- FlowDocumentFormatter.cs
- ConfigXmlAttribute.cs
- NameTable.cs
- ClickablePoint.cs
- MatrixAnimationUsingPath.cs
- FormViewDesigner.cs
- IPipelineRuntime.cs
- SoapDocumentMethodAttribute.cs
- DBConnection.cs
- BuildResult.cs
- GeneralTransform3DTo2DTo3D.cs
- XmlElementAttribute.cs
- CodeArgumentReferenceExpression.cs
- StagingAreaInputItem.cs
- GetWinFXPath.cs
- EventLogPermissionAttribute.cs
- ProxyWebPartConnectionCollection.cs
- HtmlInputReset.cs
- SecurityContext.cs
- NonBatchDirectoryCompiler.cs
- Internal.cs
- ListControl.cs
- XmlValidatingReaderImpl.cs
- XPathItem.cs
- InputManager.cs