Với FastMember, bạn có thể thực hiện việc này mà không cần phải truy cập vào DataTable (trong các thử nghiệm của tôi, tăng hơn gấp đôi hiệu suất):
using(var bcp = new SqlBulkCopy(connection))
using(var reader = ObjectReader.Create(data, "Id", "Name", "Description"))
{
bcp.DestinationTableName = "SomeTable";
bcp.WriteToServer(reader);
}
Lưu ý rằng ObjectReader cũng có thể hoạt động với các nguồn không chung chung và không cần thiết phải chỉ định trước tên thành viên (mặc dù bạn có thể muốn sử dụng ColumnMappings khía cạnh của SqlBulkCopy nếu bạn không chỉ định chúng trong ObjectReader chính nó).