Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Data / System / Data / Common / DataColumnMapping.cs / 1305376 / DataColumnMapping.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data.Common { using System; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Data; using System.Diagnostics; using System.Globalization; using System.Reflection; [ System.ComponentModel.TypeConverterAttribute(typeof(System.Data.Common.DataColumnMapping.DataColumnMappingConverter)) ] public sealed class DataColumnMapping : MarshalByRefObject, IColumnMapping, ICloneable { private DataColumnMappingCollection parent; private string _dataSetColumnName; private string _sourceColumnName; public DataColumnMapping() { } public DataColumnMapping(string sourceColumn, string dataSetColumn) { SourceColumn = sourceColumn; DataSetColumn = dataSetColumn; } [ DefaultValue(""), ResCategoryAttribute(Res.DataCategory_Mapping), ResDescriptionAttribute(Res.DataColumnMapping_DataSetColumn), ] public string DataSetColumn { get { string dataSetColumnName = _dataSetColumnName; return ((null != dataSetColumnName) ? dataSetColumnName : ADP.StrEmpty); } set { _dataSetColumnName = value; } } internal DataColumnMappingCollection Parent { get { return parent; } set { parent = value; } } [ DefaultValue(""), ResCategoryAttribute(Res.DataCategory_Mapping), ResDescriptionAttribute(Res.DataColumnMapping_SourceColumn), ] public string SourceColumn { get { string sourceColumnName = _sourceColumnName; return ((null != sourceColumnName) ? sourceColumnName : ADP.StrEmpty); } set { if ((null != Parent) && (0 != ADP.SrcCompare(_sourceColumnName, value))) { Parent.ValidateSourceColumn(-1, value); } _sourceColumnName = value; } } object ICloneable.Clone() { DataColumnMapping clone = new DataColumnMapping(); // MDAC 81448 clone._sourceColumnName = _sourceColumnName; clone._dataSetColumnName = _dataSetColumnName; return clone; } [ EditorBrowsableAttribute(EditorBrowsableState.Advanced) ] // MDAC 69508 public DataColumn GetDataColumnBySchemaAction(DataTable dataTable, Type dataType, MissingSchemaAction schemaAction) { return GetDataColumnBySchemaAction(SourceColumn, DataSetColumn, dataTable, dataType, schemaAction); } [ EditorBrowsableAttribute(EditorBrowsableState.Advanced) ] // MDAC 69508 static public DataColumn GetDataColumnBySchemaAction(string sourceColumn, string dataSetColumn, DataTable dataTable, Type dataType, MissingSchemaAction schemaAction) { if (null == dataTable) { throw ADP.ArgumentNull("dataTable"); } if (ADP.IsEmpty(dataSetColumn)) { #if DEBUG if (AdapterSwitches.DataSchema.TraceWarning) { Debug.WriteLine("explicit filtering of SourceColumn \"" + sourceColumn + "\""); } #endif return null; } DataColumnCollection columns = dataTable.Columns; Debug.Assert(null != columns, "GetDataColumnBySchemaAction: unexpected null DataColumnCollection"); int index = columns.IndexOf(dataSetColumn); if ((0 <= index) && (index < columns.Count)) { DataColumn dataColumn = columns[index]; Debug.Assert(null != dataColumn, "GetDataColumnBySchemaAction: unexpected null dataColumn"); if (!ADP.IsEmpty(dataColumn.Expression)) { #if DEBUG if (AdapterSwitches.DataSchema.TraceError) { Debug.WriteLine("schema mismatch on DataColumn \"" + dataSetColumn + "\" which is a computed column"); } #endif throw ADP.ColumnSchemaExpression(sourceColumn, dataSetColumn); } if ((null == dataType) || (dataType.IsArray == dataColumn.DataType.IsArray)) { #if DEBUG if (AdapterSwitches.DataSchema.TraceInfo) { Debug.WriteLine("schema match on DataColumn \"" + dataSetColumn + "\""); } #endif return dataColumn; } #if DEBUG if (AdapterSwitches.DataSchema.TraceWarning) { Debug.WriteLine("schema mismatch on DataColumn \"" + dataSetColumn + "\" " + dataType.Name + " != " + dataColumn.DataType.Name); } #endif throw ADP.ColumnSchemaMismatch(sourceColumn, dataType, dataColumn); } switch (schemaAction) { case MissingSchemaAction.Add: case MissingSchemaAction.AddWithKey: #if DEBUG if (AdapterSwitches.DataSchema.TraceInfo) { Debug.WriteLine("schema add of DataColumn \"" + dataSetColumn + "\" <" + Convert.ToString(dataType, CultureInfo.InvariantCulture) +">"); } #endif return new DataColumn(dataSetColumn, dataType); case MissingSchemaAction.Ignore: #if DEBUG if (AdapterSwitches.DataSchema.TraceWarning) { Debug.WriteLine("schema filter of DataColumn \"" + dataSetColumn + "\" <" + Convert.ToString(dataType, CultureInfo.InvariantCulture) +">"); } #endif return null; case MissingSchemaAction.Error: #if DEBUG if (AdapterSwitches.DataSchema.TraceError) { Debug.WriteLine("schema error on DataColumn \"" + dataSetColumn + "\" <" + Convert.ToString(dataType, CultureInfo.InvariantCulture) +">"); } #endif throw ADP.ColumnSchemaMissing(dataSetColumn, dataTable.TableName, sourceColumn); } throw ADP.InvalidMissingSchemaAction(schemaAction); } public override String ToString() { return SourceColumn; } sealed internal class DataColumnMappingConverter : System.ComponentModel.ExpandableObjectConverter { // converter classes should have public ctor public DataColumnMappingConverter() { } override public bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) { if (typeof(InstanceDescriptor) == destinationType) { return true; } return base.CanConvertTo(context, destinationType); } override public object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { if (null == destinationType) { throw ADP.ArgumentNull("destinationType"); } if ((typeof(InstanceDescriptor) == destinationType) && (value is DataColumnMapping)) { DataColumnMapping mapping = (DataColumnMapping)value; object[] values = new object[] { mapping.SourceColumn, mapping.DataSetColumn }; Type[] types = new Type[] { typeof(string), typeof(string) }; ConstructorInfo ctor = typeof(DataColumnMapping).GetConstructor(types); return new InstanceDescriptor(ctor, values); } return base.ConvertTo(context, culture, value, destinationType); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data.Common { using System; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Data; using System.Diagnostics; using System.Globalization; using System.Reflection; [ System.ComponentModel.TypeConverterAttribute(typeof(System.Data.Common.DataColumnMapping.DataColumnMappingConverter)) ] public sealed class DataColumnMapping : MarshalByRefObject, IColumnMapping, ICloneable { private DataColumnMappingCollection parent; private string _dataSetColumnName; private string _sourceColumnName; public DataColumnMapping() { } public DataColumnMapping(string sourceColumn, string dataSetColumn) { SourceColumn = sourceColumn; DataSetColumn = dataSetColumn; } [ DefaultValue(""), ResCategoryAttribute(Res.DataCategory_Mapping), ResDescriptionAttribute(Res.DataColumnMapping_DataSetColumn), ] public string DataSetColumn { get { string dataSetColumnName = _dataSetColumnName; return ((null != dataSetColumnName) ? dataSetColumnName : ADP.StrEmpty); } set { _dataSetColumnName = value; } } internal DataColumnMappingCollection Parent { get { return parent; } set { parent = value; } } [ DefaultValue(""), ResCategoryAttribute(Res.DataCategory_Mapping), ResDescriptionAttribute(Res.DataColumnMapping_SourceColumn), ] public string SourceColumn { get { string sourceColumnName = _sourceColumnName; return ((null != sourceColumnName) ? sourceColumnName : ADP.StrEmpty); } set { if ((null != Parent) && (0 != ADP.SrcCompare(_sourceColumnName, value))) { Parent.ValidateSourceColumn(-1, value); } _sourceColumnName = value; } } object ICloneable.Clone() { DataColumnMapping clone = new DataColumnMapping(); // MDAC 81448 clone._sourceColumnName = _sourceColumnName; clone._dataSetColumnName = _dataSetColumnName; return clone; } [ EditorBrowsableAttribute(EditorBrowsableState.Advanced) ] // MDAC 69508 public DataColumn GetDataColumnBySchemaAction(DataTable dataTable, Type dataType, MissingSchemaAction schemaAction) { return GetDataColumnBySchemaAction(SourceColumn, DataSetColumn, dataTable, dataType, schemaAction); } [ EditorBrowsableAttribute(EditorBrowsableState.Advanced) ] // MDAC 69508 static public DataColumn GetDataColumnBySchemaAction(string sourceColumn, string dataSetColumn, DataTable dataTable, Type dataType, MissingSchemaAction schemaAction) { if (null == dataTable) { throw ADP.ArgumentNull("dataTable"); } if (ADP.IsEmpty(dataSetColumn)) { #if DEBUG if (AdapterSwitches.DataSchema.TraceWarning) { Debug.WriteLine("explicit filtering of SourceColumn \"" + sourceColumn + "\""); } #endif return null; } DataColumnCollection columns = dataTable.Columns; Debug.Assert(null != columns, "GetDataColumnBySchemaAction: unexpected null DataColumnCollection"); int index = columns.IndexOf(dataSetColumn); if ((0 <= index) && (index < columns.Count)) { DataColumn dataColumn = columns[index]; Debug.Assert(null != dataColumn, "GetDataColumnBySchemaAction: unexpected null dataColumn"); if (!ADP.IsEmpty(dataColumn.Expression)) { #if DEBUG if (AdapterSwitches.DataSchema.TraceError) { Debug.WriteLine("schema mismatch on DataColumn \"" + dataSetColumn + "\" which is a computed column"); } #endif throw ADP.ColumnSchemaExpression(sourceColumn, dataSetColumn); } if ((null == dataType) || (dataType.IsArray == dataColumn.DataType.IsArray)) { #if DEBUG if (AdapterSwitches.DataSchema.TraceInfo) { Debug.WriteLine("schema match on DataColumn \"" + dataSetColumn + "\""); } #endif return dataColumn; } #if DEBUG if (AdapterSwitches.DataSchema.TraceWarning) { Debug.WriteLine("schema mismatch on DataColumn \"" + dataSetColumn + "\" " + dataType.Name + " != " + dataColumn.DataType.Name); } #endif throw ADP.ColumnSchemaMismatch(sourceColumn, dataType, dataColumn); } switch (schemaAction) { case MissingSchemaAction.Add: case MissingSchemaAction.AddWithKey: #if DEBUG if (AdapterSwitches.DataSchema.TraceInfo) { Debug.WriteLine("schema add of DataColumn \"" + dataSetColumn + "\" <" + Convert.ToString(dataType, CultureInfo.InvariantCulture) +">"); } #endif return new DataColumn(dataSetColumn, dataType); case MissingSchemaAction.Ignore: #if DEBUG if (AdapterSwitches.DataSchema.TraceWarning) { Debug.WriteLine("schema filter of DataColumn \"" + dataSetColumn + "\" <" + Convert.ToString(dataType, CultureInfo.InvariantCulture) +">"); } #endif return null; case MissingSchemaAction.Error: #if DEBUG if (AdapterSwitches.DataSchema.TraceError) { Debug.WriteLine("schema error on DataColumn \"" + dataSetColumn + "\" <" + Convert.ToString(dataType, CultureInfo.InvariantCulture) +">"); } #endif throw ADP.ColumnSchemaMissing(dataSetColumn, dataTable.TableName, sourceColumn); } throw ADP.InvalidMissingSchemaAction(schemaAction); } public override String ToString() { return SourceColumn; } sealed internal class DataColumnMappingConverter : System.ComponentModel.ExpandableObjectConverter { // converter classes should have public ctor public DataColumnMappingConverter() { } override public bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) { if (typeof(InstanceDescriptor) == destinationType) { return true; } return base.CanConvertTo(context, destinationType); } override public object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { if (null == destinationType) { throw ADP.ArgumentNull("destinationType"); } if ((typeof(InstanceDescriptor) == destinationType) && (value is DataColumnMapping)) { DataColumnMapping mapping = (DataColumnMapping)value; object[] values = new object[] { mapping.SourceColumn, mapping.DataSetColumn }; Type[] types = new Type[] { typeof(string), typeof(string) }; ConstructorInfo ctor = typeof(DataColumnMapping).GetConstructor(types); return new InstanceDescriptor(ctor, values); } return base.ConvertTo(context, culture, value, destinationType); } } } } // 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
- SchemaImporterExtensionElement.cs
- DataGridViewEditingControlShowingEventArgs.cs
- EmptyStringExpandableObjectConverter.cs
- ToolBarButtonClickEvent.cs
- ObjectItemCollection.cs
- OperatingSystem.cs
- HostAdapter.cs
- ListChangedEventArgs.cs
- XmlAnyElementAttributes.cs
- CharacterBuffer.cs
- DataSourceSelectArguments.cs
- SoapObjectReader.cs
- ReverseQueryOperator.cs
- AmbiguousMatchException.cs
- CommandCollectionEditor.cs
- WebBaseEventKeyComparer.cs
- VisualStyleElement.cs
- Win32KeyboardDevice.cs
- ConfigXmlElement.cs
- COM2Properties.cs
- ValueType.cs
- WorkflowInstanceExtensionManager.cs
- EnvelopedPkcs7.cs
- GuidConverter.cs
- DecimalAnimation.cs
- ClientSettingsStore.cs
- Run.cs
- OpenFileDialog.cs
- Int64AnimationBase.cs
- Rules.cs
- PropertyChangedEventArgs.cs
- LinearQuaternionKeyFrame.cs
- DbExpressionBuilder.cs
- TrustLevel.cs
- MemoryStream.cs
- MapPathBasedVirtualPathProvider.cs
- FacetChecker.cs
- SourceFileBuildProvider.cs
- RootBrowserWindowProxy.cs
- PanelDesigner.cs
- TextElementCollection.cs
- TransformProviderWrapper.cs
- ParameterRetriever.cs
- OutputCacheSection.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- RoutedEventConverter.cs
- wgx_sdk_version.cs
- Config.cs
- DeflateInput.cs
- ListView.cs
- DbProviderFactoriesConfigurationHandler.cs
- Int16AnimationUsingKeyFrames.cs
- DataGridViewRowPostPaintEventArgs.cs
- AssociationTypeEmitter.cs
- CompiledQueryCacheEntry.cs
- ToolStripGripRenderEventArgs.cs
- Pen.cs
- ConfigXmlAttribute.cs
- HtmlElementEventArgs.cs
- TrackingMemoryStreamFactory.cs
- Closure.cs
- DispatcherProcessingDisabled.cs
- ReadonlyMessageFilter.cs
- ContextQuery.cs
- RegexWriter.cs
- ImageIndexConverter.cs
- EventLogEntry.cs
- MdiWindowListItemConverter.cs
- RtfFormatStack.cs
- ProxyGenerationError.cs
- RuntimeResourceSet.cs
- InstalledFontCollection.cs
- IdentifierService.cs
- AddressAccessDeniedException.cs
- UriSectionReader.cs
- InsufficientMemoryException.cs
- SignatureToken.cs
- ListViewGroupItemCollection.cs
- WebPartTracker.cs
- WaitingCursor.cs
- BufferedReadStream.cs
- DataGridViewRowPostPaintEventArgs.cs
- XmlRootAttribute.cs
- OdbcParameter.cs
- QilGenerator.cs
- SafeNativeMethods.cs
- ComAdminInterfaces.cs
- Array.cs
- ClientBuildManager.cs
- connectionpool.cs
- TreeNodeStyle.cs
- CopyOfAction.cs
- FloatAverageAggregationOperator.cs
- VisualStateChangedEventArgs.cs
- ServiceKnownTypeAttribute.cs
- UserControl.cs
- DBNull.cs
- StrongNameUtility.cs
- MexHttpsBindingCollectionElement.cs
- EntityCommandCompilationException.cs