Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SqlBulkCopy da un elenco<>

Con FastMember, puoi farlo senza mai dover passare da DataTable (che, nei miei test, raddoppia le prestazioni):

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

Nota che ObjectReader può funzionare anche con sorgenti non generiche e non è necessario specificare i nomi dei membri in anticipo (sebbene tu voglia probabilmente usare ColumnMappings aspetto di SqlBulkCopy se non li specifichi in ObjectReader stesso).