コード例 #1
0
 private void InitBulkInsertColumns(IDataReader data)
 {
     for (int i = 0; i < ColumnMappings.Count; i++)
     {
         BulkInsertColumnMapping mapping = ColumnMappings[i];
         if (!string.IsNullOrWhiteSpace(mapping.SourceName))
         {
             try
             {
                 data.GetOrdinal(mapping.SourceName); // Throws some exception if name is invalid.
                 _columns.Add(new MsAccessBulkInsertColumn(mapping.SourceName, mapping));
             }
             catch (Exception ex)
             {
                 ThrowExceptionInvalidSourceColumnMapping(i, null, mapping.SourceName, ex);
             }
         }
         else if (mapping.SourceOrdinal >= 0)
         {
             if (mapping.SourceOrdinal >= data.FieldCount)
             {
                 ThrowExceptionInvalidSourceColumnMapping(i, mapping.SourceOrdinal);
             }
             _columns.Add(new MsAccessBulkInsertColumn(data.GetName(mapping.SourceOrdinal), mapping));
         }
         else
         {
             ThrowExceptionInvalidSourceColumnMapping(i);
         }
     }
 }
コード例 #2
0
        private void InitExplicitSchemaColumns(StreamWriter schemaFile)
        {
            var         schemaLoader = new MsAccessSchemaLoader();
            TableSchema tableSchema  = schemaLoader.LoadTableSchema(_connection, DestinationTableName);

            for (int columnNumber = 0; columnNumber < ColumnMappings.Count; columnNumber++)
            {
                MsAccessColumnSchema     databaseColumn   = null;
                MsAccessBulkInsertColumn bulkInsertColumn = _columns[columnNumber];
                BulkInsertColumnMapping  mapping          = bulkInsertColumn.Mapping;
                if (!string.IsNullOrWhiteSpace(mapping.DestinationName))
                {
                    if (tableSchema.Columns.Contains(mapping.DestinationName))
                    {
                        databaseColumn = (MsAccessColumnSchema)tableSchema.Columns[mapping.DestinationName];
                    }
                    else
                    {
                        ThrowExceptionInvalidDestinationColumnMapping(columnNumber, null, mapping.DestinationName);
                    }
                }
                else if (mapping.DestinationOrdinal >= 0)
                {
                    if (mapping.DestinationOrdinal >= tableSchema.Columns.Count)
                    {
                        ThrowExceptionInvalidDestinationColumnMapping(columnNumber, mapping.DestinationOrdinal);
                    }
                    else
                    {
                        databaseColumn = (MsAccessColumnSchema)tableSchema.Columns[mapping.DestinationOrdinal];
                    }
                }
                else
                {
                    ThrowExceptionInvalidDestinationColumnMapping(columnNumber);
                }
                bulkInsertColumn.DestinationColumnName = databaseColumn.Name;
                bulkInsertColumn.ColumnType            = GetBulkInsertColumnType(databaseColumn);
                WriteSchemaColumnInfo(schemaFile, columnNumber + 1, databaseColumn);
            }
        }
コード例 #3
0
 public MsAccessBulkInsertColumn(string sourceColumnName, BulkInsertColumnMapping mapping)
 {
     SourceColumnName = Check.NotNullOrWhiteSpace(sourceColumnName, nameof(sourceColumnName));
     Mapping          = mapping;
 }