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ó).