Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SqlBulkCopy à partir d'une liste<>

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