Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SqlBulkCopy aus einer Liste<>

Mit FastMember können Sie dies tun, ohne jemals über DataTable gehen zu müssen (was in meinen Tests die Leistung mehr als verdoppelt):

using(var bcp = new SqlBulkCopy(connection))
using(var reader = ObjectReader.Create(data, "Id", "Name", "Description"))
{
    bcp.DestinationTableName = "SomeTable";
    bcp.WriteToServer(reader);
}

Beachten Sie, dass ObjectReader kann auch mit nicht generischen Quellen arbeiten, und es ist nicht notwendig, die Mitgliedsnamen im Voraus anzugeben (obwohl Sie wahrscheinlich die ColumnMappings verwenden möchten Aspekt von SqlBulkCopy wenn Sie sie nicht im ObjectReader angeben selbst).