Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SqlBulkCopy de uma lista<>


Com FastMember, você pode fazer isso sem precisar acessar DataTable (que, em meus testes, mais que dobra o desempenho):
using(var bcp = new SqlBulkCopy(connection))
using(var reader = ObjectReader.Create(data, "Id", "Name", "Description"))
{
    bcp.DestinationTableName = "SomeTable";
    bcp.WriteToServer(reader);
}

Observe que ObjectReader também pode trabalhar com fontes não genéricas, e não é necessário especificar os nomes dos membros antecipadamente (embora você provavelmente queira usar o ColumnMappings aspecto de SqlBulkCopy se você não especificá-los no ObjectReader em si).