SqlBulkCopyColumnMappingCollection Classe

Definição

Coleção de SqlBulkCopyColumnMapping objetos que herda de CollectionBase.

public ref class SqlBulkCopyColumnMappingCollection sealed : System::Collections::CollectionBase
public sealed class SqlBulkCopyColumnMappingCollection : System.Collections.CollectionBase
type SqlBulkCopyColumnMappingCollection = class
    inherit CollectionBase
Public NotInheritable Class SqlBulkCopyColumnMappingCollection
Inherits CollectionBase
Herança
SqlBulkCopyColumnMappingCollection

Exemplos

O exemplo seguinte copia em massa dados de uma tabela de origem na base de dados de exemplos AdventureWorks para uma tabela de destino na mesma base de dados. Embora o número de colunas no destino coincida com o número de colunas na fonte, os nomes das colunas e as posições ordinais não coincidem. SqlBulkCopyColumnMapping são adicionados ao SqlBulkCopyColumnMappingCollection para o SqlBulkCopy objeto para criar um mapa de colunas para a cópia em massa.

Importante

Este exemplo não será executado a menos que as tabelas de trabalho tenham sido criadas conforme descrito na configuração do exemplo de cópia em massa . Este código é fornecido apenas para demonstrar a sintaxe para usar SqlBulkCopy. Se as tabelas de origem e destino estiverem na mesma instância SQL Server, é mais fácil e rápido usar uma instrução Transact-SQL INSERT ... SELECT para copiar os dados.

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoDifferentColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object.
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoDifferentColumns";

                // The column order in the source doesn't match the order
                // in the destination, so ColumnMappings must be defined.
                bulkCopy.ColumnMappings.Add("ProductID", "ProdID");
                bulkCopy.ColumnMappings.Add("Name", "ProdName");
                bulkCopy.ColumnMappings.Add("ProductNumber", "ProdNum");

                // Write from the source to the destination.
                try
                {
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}
Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoDifferentColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object.
            Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoDifferentColumns"

                ' The column order in the source doesn't match the order 
                ' in the destination, so ColumnMappings must be defined.
                bulkCopy.ColumnMappings.Add("ProductID", "ProdID")
                bulkCopy.ColumnMappings.Add("Name", "ProdName")
                bulkCopy.ColumnMappings.Add("ProductNumber", "ProdNum")

                ' Write from the source to the destination.
                Try
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code, 
        ' you can retrieve it from a configuration file. 
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

Observações

Os mapeamentos de colunas definem o mapeamento entre a fonte de dados e a tabela de destino.

Se os mapeamentos não estiverem definidos – ou seja, a ColumnMappings coleção estiver vazia – as colunas são mapeadas implicitamente com base na posição ordinal. Para que isto funcione, os esquemas de origem e destino têm de coincidir. Se não o fizerem, é lançado InvalidOperationException .

Se a ColumnMappings coleção não estiver vazia, nem todas as colunas presentes na fonte de dados têm de ser especificadas. Aqueles que não são mapeados pela coleção são ignorados.

Pode referir-se às colunas de origem e destino pelo nome ou ordinal. Pode misturar referências por nome e por colunas ordinais na mesma coleção de mapeamentos.

Propriedades

Name Description
Capacity

Obtém ou define o número de elementos que podem CollectionBase conter.

(Herdado de CollectionBase)
Count

Obtém o número de elementos contidos na CollectionBase instância. Esta propriedade não pode ser substituída.

(Herdado de CollectionBase)
InnerList

Obtém um ArrayList contendo a lista de elementos na CollectionBase instância.

(Herdado de CollectionBase)
Item[Int32]

Obtém o SqlBulkCopyColumnMapping objeto no índice especificado.

List

Obtém um IList contendo a lista de elementos na CollectionBase instância.

(Herdado de CollectionBase)

Métodos

Name Description
Add(Int32, Int32)

Cria um novo SqlBulkCopyColumnMapping e adiciona-o à coleção, usando ordinais para especificar tanto as colunas de origem como de destino.

Add(Int32, String)

Cria um novo SqlBulkCopyColumnMapping e adiciona-o à coleção, usando um ordinal para a coluna de origem e uma string para a coluna de destino.

Add(SqlBulkCopyColumnMapping)

Adiciona o mapeamento especificado ao SqlBulkCopyColumnMappingCollection.

Add(String, Int32)

Cria um novo SqlBulkCopyColumnMapping e adiciona-o à coleção, usando um nome de coluna para descrever a coluna de origem e um ordinal para especificar a coluna de destino.

Add(String, String)

Cria um novo SqlBulkCopyColumnMapping e adiciona-o à coleção, usando nomes de colunas para especificar tanto as colunas de origem como de destino.

Clear()

Limpa o conteúdo da coleção.

Contains(SqlBulkCopyColumnMapping)

Recebe um valor que indica se existe um objeto especificado SqlBulkCopyColumnMapping na coleção.

CopyTo(SqlBulkCopyColumnMapping[], Int32)

Copia os elementos de para SqlBulkCopyColumnMappingCollection um array de SqlBulkCopyColumnMapping itens, começando num índice específico.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetEnumerator()

Devolve um enumerador que itera pela CollectionBase instância.

(Herdado de CollectionBase)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IndexOf(SqlBulkCopyColumnMapping)

Obtém o índice do objeto especificado SqlBulkCopyColumnMapping .

Insert(Int32, SqlBulkCopyColumnMapping)

Insira um novo SqlBulkCopyColumnMapping no índice especificado.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
OnClear()

Realiza processos personalizados adicionais ao limpar o conteúdo da CollectionBase instância.

(Herdado de CollectionBase)
OnClearComplete()

Realiza processos personalizados adicionais após limpar o conteúdo da CollectionBase instância.

(Herdado de CollectionBase)
OnInsert(Int32, Object)

Realiza processos personalizados adicionais antes de inserir um novo elemento na CollectionBase instância.

(Herdado de CollectionBase)
OnInsertComplete(Int32, Object)

Executa processos personalizados adicionais após inserir um novo elemento na CollectionBase instância.

(Herdado de CollectionBase)
OnRemove(Int32, Object)

Realiza processos personalizados adicionais ao remover um elemento da CollectionBase instância.

(Herdado de CollectionBase)
OnRemoveComplete(Int32, Object)

Executa processos personalizados adicionais após remover um elemento da CollectionBase instância.

(Herdado de CollectionBase)
OnSet(Int32, Object, Object)

Realiza processos personalizados adicionais antes de definir um valor na CollectionBase instância.

(Herdado de CollectionBase)
OnSetComplete(Int32, Object, Object)

Executa processos personalizados adicionais após definir um valor na CollectionBase instância.

(Herdado de CollectionBase)
OnValidate(Object)

Realiza processos personalizados adicionais ao validar um valor.

(Herdado de CollectionBase)
Remove(SqlBulkCopyColumnMapping)

Remove o elemento especificado SqlBulkCopyColumnMapping do SqlBulkCopyColumnMappingCollection.

RemoveAt(Int32)

Remove o mapeamento no índice especificado da coleção.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Implementações de Interface Explícita

Name Description
ICollection.CopyTo(Array, Int32)

Copia a totalidade CollectionBase para uma unidimensional Arraycompatível , começando no índice especificado do array alvo.

(Herdado de CollectionBase)
ICollection.IsSynchronized

Recebe um valor que indica se o acesso ao CollectionBase é sincronizado (thread safe).

(Herdado de CollectionBase)
ICollection.SyncRoot

Obtém um objeto que pode ser usado para sincronizar o acesso ao CollectionBase.

(Herdado de CollectionBase)
IList.Add(Object)

Adiciona um objeto ao final do CollectionBase.

(Herdado de CollectionBase)
IList.Contains(Object)

Determina se o CollectionBase contém um elemento específico.

(Herdado de CollectionBase)
IList.IndexOf(Object)

Procura o especificado Object e devolve o índice baseado em zero da primeira ocorrência dentro de todo CollectionBaseo .

(Herdado de CollectionBase)
IList.Insert(Int32, Object)

Insere um elemento no CollectionBase índice especificado.

(Herdado de CollectionBase)
IList.IsFixedSize

Obtém um valor que indica se o CollectionBase tem um tamanho fixo.

(Herdado de CollectionBase)
IList.IsReadOnly

Recebe um valor que indica se o CollectionBase é apenas de leitura.

(Herdado de CollectionBase)
IList.Item[Int32]

Obtém ou define o elemento no índice especificado.

(Herdado de CollectionBase)
IList.Remove(Object)

Remove a primeira ocorrência de um objeto específico do CollectionBase.

(Herdado de CollectionBase)

Métodos da Extensão

Name Description
AsParallel(IEnumerable)

Permite a paralelização de uma consulta.

AsQueryable(IEnumerable)

Converte um IEnumerable para um IQueryable.

Cast<TResult>(IEnumerable)

Conjura os elementos de an IEnumerable para o tipo especificado.

OfType<TResult>(IEnumerable)

Filtra os elementos de um IEnumerable com base num tipo especificado.

Aplica-se a

Ver também