С FastMember , вы можете сделать это без необходимости проходить через DataTable
(что, в моих тестах, более чем удваивает производительность):
using(var bcp = new SqlBulkCopy(connection))
using(var reader = ObjectReader.Create(data, "Id", "Name", "Description"))
{
bcp.DestinationTableName = "SomeTable";
bcp.WriteToServer(reader);
}
Обратите внимание, что ObjectReader
также может работать с неуниверсальными источниками, и нет необходимости указывать имена членов заранее (хотя вы, вероятно, захотите использовать ColumnMappings
аспект SqlBulkCopy
, если вы не не указывайте их в самом ObjectReader
.