.NET ci mette a disposizione un potentissimo strumento, ai molti misconosciuto, per trasferire con una semplice riga di codice il contenuto di una DataTable in una tabella fisica di un database SQLServer.
La classe in questione è SqlBulkCopy e la troviamo nel namespace Data.SqlClient.
Come suggerisce il nome, quello che sostanzialmente fa è trasferire in un colpo solo tutti i dati della nostra DataTable di partenza direttamente nella tabella di destinazione, con prestazioni ottimali e senza dover scrivere alcun loop che cicli attraverso righe e colonne della tabella di partenza. L’unico requisito richiesto è che sorgente e destinazione abbiano lo stesso tracciato record.
Ecco un esempio minimale in VB.NET:
Dim sbc1 As New Data.SqlClient.SqlBulkCopy([CONNECTION STRING VALIDA])
sbc1.DestinationTableName = [NOME TABELLA SU SQL SERVER]
sbc1.WriteToServer([OGGETTO DATATABLE])
Davvero una grandissima facilitazione, nascosta tra le pieghe del potente framework .NET.
Come referenza, ecco il corrispondente link alla documentazione Microsoft: http://msdn.microsoft.com/library/system.data.sqlclient.sqlbulkcopy(v=vs.100).aspx