sql >> Base de Datos >  >> RDS >> Sqlserver

SqlBulkCopy de una lista<>

Con FastMember, puede hacer esto sin tener que pasar por DataTable (que, en mis pruebas, más que duplica el rendimiento):

using(var bcp = new SqlBulkCopy(connection))
using(var reader = ObjectReader.Create(data, "Id", "Name", "Description"))
{
    bcp.DestinationTableName = "SomeTable";
    bcp.WriteToServer(reader);
}

Tenga en cuenta que ObjectReader también puede trabajar con fuentes no genéricas, y no es necesario especificar los nombres de los miembros por adelantado (aunque probablemente quiera usar el ColumnMappings aspecto de SqlBulkCopy si no los especifica en el ObjectReader mismo).