Noto che in giro si fa largo uso della AddWithValue(), a me non è mai piaciuta sarà per il mio naturale snobbismo delle cose semplici. Dopo un po di anni che ci pensavo su ho deciso che era giunto il tempo di capirci meglio, mi sono armato di F11 e ho guardato un po dentro la libreria System.Data.

Quello che sospettavo mi viene confermato alla riga 1271 del file SqlParameter.cs, ovviamente esegue un _value.GetType() per poter preparare i parametri da passare a SQL Server. Se siete dei fissati dell’ottimizzazione tenetelo da buon conto.

Un altro aspetto è invece un po più subdolo, è legato ai tipi di dato che potrebbero essere rappresentati in SQL Server in differenti modi, ad esempio nel caso di String la SqlParameter imposta come tipo sql l’nvarchar, se sfortunatamente state lavorando con un DB che usa varchar, avverrà una seconda conversione da parte di SQL Server.

Se poi spaventa il dover impostare il valore in due righe di codice:

com.Parameters.Add("@parametro", SqlDbType.NVarChar);
com.Parameters["@parametro"].Value = _value;

 

E’ meglio usare questa scrittura molto più elegante:

com.Parameters.Add("@parametro", SqlDbType.NVarChar).Value= _value;