Differenza con Parameters.Add e Parameters.AddWithValue

In AddWithValue Commands hanno Parameters e parametri ha funzioni come Add , Add e così via. In tutte le esercitazioni che ho visto, di solito ho notato che stanno usando Add invece di AddWithValue .

 .Parameters.Add("@ID", SqlDbType.Int) 

vs

 .Parameters.AddWithValue("@ID", 1) 

C’è un motivo per NON usare AddWithValue ? Preferirei usarlo finita

 Parameters.Add("@ID", SqlDbType.Int, 4).Value = 1 

dal momento che salva il mio tempo di codifica. Quindi quale è meglio usare? Quale è sicuro da usare? Migliora le prestazioni?

Con il metodo Add() puoi limitare l’input dell’utente specificando il tipo e la lunghezza dei dati, specialmente per le colonne varchar .

 .Parameters.Add("@name",SqlDbType.VarChar,30).Value=varName; 

Nel caso del metodo AddWithValue () (conversione implicita del valore), invia il valore nvarchar al database.

Credo che ci siano anche alcuni svantaggi nell’usare AddWithValue che influenzano il piano di eccitazione della cache di SQL, vedere qui la sezione relativa alla lunghezza dei parametri

Io userei AddWithValue per i casi normali. E usare Aggiungi (nome, dbtype … solo quando il tipo di colonna è diverso da come .net converte il tipo CLR.