Med FastMember kan du gøre dette uden nogensinde at skulle gå via DataTable
(hvilket i mine tests mere end fordobler præstationen):
using(var bcp = new SqlBulkCopy(connection))
using(var reader = ObjectReader.Create(data, "Id", "Name", "Description"))
{
bcp.DestinationTableName = "SomeTable";
bcp.WriteToServer(reader);
}
Bemærk at ObjectReader
kan også arbejde med ikke-generiske kilder, og det er ikke nødvendigt at angive medlemsnavnene på forhånd (selvom du sandsynligvis vil bruge ColumnMappings
aspekt af SqlBulkCopy
hvis du ikke angiver dem i ObjectReader
sig selv).