Beispiel #1
0
        static internal DataColumn CreateDataColumnBySchemaAction(string sourceColumn, string dataSetColumn, DataTable dataTable, Type dataType, MissingSchemaAction schemaAction)
        {
            Debug.Assert(dataTable != null, "Should not call with a null DataTable");
            if (ADP.IsEmpty(dataSetColumn))
            {
                return(null);
            }

            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 static DataColumn GetDataColumnBySchemaAction(string sourceColumn, string dataSetColumn, DataTable dataTable, Type dataType, MissingSchemaAction schemaAction)
        {
            if (dataTable == null)
            {
                throw ADP.ArgumentNull("dataTable");
            }
            if (ADP.IsEmpty(dataSetColumn))
            {
                return(null);
            }
            DataColumnCollection columns = dataTable.Columns;
            int index = columns.IndexOf(dataSetColumn);

            if ((0 <= index) && (index < columns.Count))
            {
                DataColumn column = columns[index];
                if (!ADP.IsEmpty(column.Expression))
                {
                    throw ADP.ColumnSchemaExpression(sourceColumn, dataSetColumn);
                }
                if ((null != dataType) && (dataType.IsArray != column.DataType.IsArray))
                {
                    throw ADP.ColumnSchemaMismatch(sourceColumn, dataType, column);
                }
                return(column);
            }
            switch (schemaAction)
            {
            case MissingSchemaAction.Add:
            case MissingSchemaAction.AddWithKey:
                return(new DataColumn(dataSetColumn, dataType));

            case MissingSchemaAction.Ignore:
                return(null);

            case MissingSchemaAction.Error:
                throw ADP.ColumnSchemaMissing(dataSetColumn, dataTable.TableName, sourceColumn);
            }
            throw ADP.InvalidMissingSchemaAction(schemaAction);
        }
Beispiel #3
0
        internal static DataColumn CreateDataColumnBySchemaAction(string sourceColumn, string dataSetColumn, DataTable dataTable, Type dataType, MissingSchemaAction schemaAction)
        {
            Debug.Assert(dataTable != null, "Should not call with a null DataTable");
            if (string.IsNullOrEmpty(dataSetColumn))
            {
                return(null);
            }

            switch (schemaAction)
            {
            case MissingSchemaAction.Add:
            case MissingSchemaAction.AddWithKey:
                return(new DataColumn(dataSetColumn, dataType));

            case MissingSchemaAction.Ignore:
                return(null);

            case MissingSchemaAction.Error:
                throw ADP.ColumnSchemaMissing(dataSetColumn, dataTable.TableName, sourceColumn);
            }
            throw ADP.InvalidMissingSchemaAction(schemaAction);
        }
Beispiel #4
0
        internal static DataColumn?CreateDataColumnBySchemaAction(string?sourceColumn, string?dataSetColumn, DataTable dataTable, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.PublicFields)] Type?dataType, MissingSchemaAction schemaAction)
        {
            Debug.Assert(dataTable != null, "Should not call with a null DataTable");
            if (string.IsNullOrEmpty(dataSetColumn))
            {
                return(null);
            }

            switch (schemaAction)
            {
            case MissingSchemaAction.Add:
            case MissingSchemaAction.AddWithKey:
                return(new DataColumn(dataSetColumn, dataType !));

            case MissingSchemaAction.Ignore:
                return(null);

            case MissingSchemaAction.Error:
                throw ADP.ColumnSchemaMissing(dataSetColumn, dataTable.TableName, sourceColumn);
            }
            throw ADP.InvalidMissingSchemaAction(schemaAction);
        }
        [EditorBrowsableAttribute(EditorBrowsableState.Advanced)]   // MDAC 69508
        public DataColumn GetDataColumnBySchemaAction(DataTable dataTable, Type dataType, MissingSchemaAction schemaAction)
        {
            if (null == dataTable)
            {
                throw ADP.NullDataTable("dataTable");
            }
            string dataSetColumn = DataSetColumn;

            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) + ">");
                }
#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) + ">");
                }
#endif
                return(null);

            case MissingSchemaAction.Error:
#if DEBUG
                if (AdapterSwitches.DataSchema.TraceError)
                {
                    Debug.WriteLine("schema error on DataColumn \"" + dataSetColumn + "\" <" + Convert.ToString(dataType) + ">");
                }
#endif
                throw ADP.ColumnSchemaMissing(dataSetColumn, dataTable.TableName, SourceColumn);
            }
            throw ADP.InvalidSchemaAction((int)schemaAction);
        }