Avec FastMember, vous pouvez le faire sans jamais avoir besoin de passer par DataTable
(ce qui, dans mes tests, fait plus que doubler les performances) :
using(var bcp = new SqlBulkCopy(connection))
using(var reader = ObjectReader.Create(data, "Id", "Name", "Description"))
{
bcp.DestinationTableName = "SomeTable";
bcp.WriteToServer(reader);
}
Notez que ObjectReader
peut également fonctionner avec des sources non génériques, et il n'est pas nécessaire de spécifier les noms de membres à l'avance (bien que vous souhaitiez probablement utiliser les ColumnMappings
aspect de SqlBulkCopy
si vous ne les spécifiez pas dans le ObjectReader
lui-même).